ExcelVBA-打开对话框取得文件夹路径2种方法
Excel VBA自动化处理文件时,通常有这样的操作:
(1)打开文件对话框==>
(2)选中文件夹==>
(3)确定==>
(4)返回文件夹路径==>
(5)读取文件夹中的所有文件==>
(6)再进行其他操作
今天来学习其中的(1)-(4)
共有两种方式:
一、Application.FileDialog
语法:expression.FileDialog (fileDialogType)
MsoFileDialogType 可为下述常量之一:
msoFileDialogFilePicker。 允许用户选择文件。
msoFileDialogFolderPicker。 允许用户选择文件夹。
msoFileDialogOpen。 允许用户打开文件。
msoFileDialogSaveAs。 允许用户保存文件。
其中msoFileDialogFolderPicker就是用于打开文件夹的
【代码】
Sub FileDialog_sample1()
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = ThisWorkbook.Path
.Title = "选择文件夹"
If .Show = True Then
Range("B1") = .SelectedItems(1) & ""
Else
MsgBox "你选择了“取消”"
End If
End With
End Sub
【效果】
二、Shell.Application之BrowseForFolder
语法:set obj=CreateObject("Shell.Application").BrowseForFolder(s1, s2, s3, s4)
第一个为对话框的窗体句柄,一般设置为0;
第二个为打开窗体的说明,如上图中的“请选择上传文件夹”;
第三个参数控制打开的窗口中显示的内容以及窗体中某些元素的状态,如不显示“新建文件夹”;
第四个参数为可选参数,只要控制对话框中文件系统的根目录。缺省值为 0 指“桌面”。
如果设置了其他数据,将不能再打开其他文件夹,所以建议设置为0
【代码】
Sub yhd_BrowseFolders()
Dim objshell As Object
Dim objFolder As Object
Set objshell = CreateObject("Shell.Application") '后期绑定Shell.Application
'弹出对话框
Set objFolder = objshell.BrowseForFolder(0, "请选择文件夹", 0, 0)
If Not objFolder Is Nothing Then
Path = objFolder.Self.Path & ""
Else
MsgBox "未选择文件夹,将退出"
Exit Sub
End If
Range("B1") = Path
Set objFolder = Nothing
Set objshell = Nothing
End Sub
【效果】