在用VBA操作文件和文件夹的过程中,除了新建文件夹,我们还经常需要与文件夹有个人机交互的过程,比如选择文件所在的文件夹,然后再执行一系列VBA动作。
这个选择的过程也是打开文件夹的一种,这种在VBA里用内置的对话框对象FileDialog就可以实现。
今天要讲的打开文件夹不是这种,而是指在完成了一系列VBA动作后,如何直接打开结果文件夹,看下执行的情况。
以前我们往往都是执行完程序后,再用鼠标去打开结果文件夹看下结果,今天介绍的方法可以直接连这个鼠标步骤都免了。
接下来介绍几种在vba中打开文件夹的方法:
1.用Shell函数打开指定的文件夹
代码如下:
Sub exceloffice() '***************** '上面一连串代码 '最后打开文件夹看下效果 Dim sPath As String sPath = "c:\test" Shell "explorer.exe " & sPath, vbMaximizedFocus End Sub
Shell函数是vba内置的函数,使用起来非常方便。它可以直接运行各种exe程序,同时附带参数运行。
使用Shell函数还可以直接运行Python打包后的exe程序,从而借助Python的强大功能助推VBA。
在本例中,Shell函数通过调用文件资源管理器explorer.exe直接打开指定的文件夹,其中 vbMaximizedFocus表示打开的时候最大化显示。
方法二:用Shell对象打开指定的文件夹
代码如下:
Sub exceloffice() '***************** '上面一连串代码 '最后打开文件夹看下效果 Dim sPath As String sPath = "c:\test" Dim oShell As Object Set oShell = VBA.CreateObject("shell.application") With oShell .Open (sPath) End With End Sub
其实这个原理和Shell是一样的,但是Shell对象提供了自动化接口,功能更全,不仅可以打开文件夹,还可以做很多操作电脑的事情。
比如切换到桌面、打开运行对话框、关闭电脑等等,如下所示
Sub exceloffice() Set oShell = CreateObject("shell.application") With oShell '切换到桌面 .ToggleDesktop '打开运行对话框 .FileRun '关闭电脑,记得保存文件 .ShutdownWindows End With End Sub
最后附上Shell对象的所有方法列表:
方法 | 说明 |
AddToRecent | 添加一个对象到“最近的文档”的列表。 |
BrowseForFolder | 创建一个对话框让用户选择一个文件夹,然后返回所选文件夹的Folder对象。 |
CanStartStopService | 确定是否当前用户可以启动和停止指定的服务。 |
CascadeWindows | 层叠桌面上所有窗口,相当于右击任务栏选择“层叠窗口”。 |
ControlPanelItem | 运行指定的控制面板(*.cpl)应用程序。如果应用程序已经打开,它就会激活运行的实例。 |
EjectPC | 挂起计算机。如果电脑支持这个命令。 |
Explore | 在Windows资源管理器窗口中打开一个指定的文件夹。 |
ExplorerPolicy | 获取指定的 Internet Explorer 策略的数据值。 |
FileRun | 显示运行对话框。 |
FindComputer | 显示“搜索结果:计算机”对话框。 |
FindFiles | 显示“搜索:所有文件”对话框。 |
FindPrinter | 显示“查找打印机”对话框允许用户找到打印机。 |
GetSetting | 检索Shell全局设置。 |
GetSystemInformation | 检索系统信息。 |
Help | 显示Windows帮助和支持中心。 |
IsRestricted | 从注册表检索一个组的限定设置。 |
IsServiceRunning | 返回一个值,表示指定服务是否正在运行。 |
MinimizeAll | 最小化桌面上所有窗口。 |
NameSpace | 创建和返回指定的文件夹的Folder对象。 |
Open | 打开指定的文件夹。 |
RefreshMenu | 刷新开始菜单中的内容。只用于Windows XP之前的系统。 |
ServiceStart | 启动一个指定的服务。 |
ServiceStop | 停止一个指定的服务。 |
SetTime | 显示“日期和时间属性”对话框。 |
ShellExecute | 对指定文件执行指定的操作。 |
ShowBrowserBar | 显示一个浏览器工具栏。 |
ShutdownWindows | 显示“关闭计算机”对话框。 |
Suspend | 不执行。 |
TileHorizontally | 横向平铺桌面上所有窗口。 |
TileVertically | 纵向平铺桌面上所有窗口。 |
ToggleDesktop | 显示或隐藏桌面。 |
TrayProperties | 显示“任务栏和「开始」菜单属性”对话框。 |
UndoMinimizeALL | 撤消最小化所有窗口,恢复所有桌面窗口到它们在上次MinimizeAll命令之前相同的状态。 |
Windows | 创建和返回一个ShellWindows对象。这个对象表示属于壳的所有打开的窗口的集合。 |
WindowsSecurity | 显示“Windows安全”对话框。 |
WindowSwitcher | Windows Vista及以后系统的新增方法,在可以预览的3D堆栈中显示打开的窗口。 |
发表评论