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
语法:CreateObject("Shell.Application").BrowseForFolder(s1, s2, s3, s4)
第一个为对话框的窗体句柄,一般设置为0;第二个为打开窗体的说明,如上图中的“请选择上传文件夹”;第三个参数控制打开的窗口中显示的内容以及窗体中某些元素的状态,如不显示“新建文件夹”;第四个参数为可选参数,只要控制对话框中文件系统的根目录。缺省值为 0 指“桌面”。 |
---|
【第四个参数】详解
注意:如果设置了其他数据,将不能再打开其他文件夹,
所以建议设置为0
【代码】
Sub yhd_BrowseFolders()
Dim objshell As Object
Dim objFolder As Object
'后期绑定Shell.Application
Set objshell = CreateObject("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
【效果】
=========================
以上两种方法均可取到像这样:
“C:\Users\Administrator\Desktop\练习文件\PQ\”
的文件夹路径,注意要 & "\"的哦,
接下来我们就可能进行下一步的读取文件列表的工作啦
个人感觉Application.FileDialog比较好用
今天记录到此吧,如果有用请转发,让更多人学习到。