如何用vba打开文件夹?

在用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堆栈中显示打开的窗口。

       

发表评论