在如何用vba打开选择文件和选择文件夹对话框? 一文中我们介绍了使用vba内置的FileDialog对象用于操作打开文件和选择文件夹对话框。
当用 Application.FileDialog(msoFileDialogFilePicker) 弹出选择文件对话框时,默认会显示所有文件。
我们经常需要只显示某类文件,比如只显示excel 文件或者只显示word 文件。
这时候可以使用FileDialog对象的Filters属性添加一个FileDialogFilters集合对象,把要筛选的文件模式写入。
使用FileDialogFilters集合对象的Add方法添加要筛选的文件,它的语法如下:
expression .Add(Description, Extensions, Position)
其中Description参数为要筛选的文件的描述字符,比如”Excel 文件”,Extensions参数为要筛选的文件夹的扩展名,这里可以使用?和*作为通配符,比如”*.xls*”。当要显示多个文件的扩展名时,可以使用;分隔,比如”*.xls*;*.doc*”。
Position参数为要显示在筛选下拉列表框中的位置。
以下是一个示例代码,打开可以只选择excel文件或者word文件的文件选择对话框:
Function GetPath() As String
'声明一个FileDialog对象变量
Dim oFD As FileDialog
Dim oFDFilter As FileDialogFilters
' '创建一个选择文件对话框
Set oFD = Application.FileDialog(msoFileDialogFilePicker)
'创建一个选择文件夹对话框
' Set oFD = Application.FileDialog(msoFileDialogFolderPicker)
'声明一个变量用来存储选择的文件名
Dim vrtSelectedItem As Variant
With oFD
.Filters.Clear
.Filters.Add "Excel文件", "*.xls*", 1
.Filters.Add "Word文件", "*.doc*", 2
'允许选择多个文件
.AllowMultiSelect = True
'使用Show方法显示对话框,如果单击了确定按钮则返回-1。
If .Show = -1 Then
'遍历所有选择的文件
For Each vrtSelectedItem In .SelectedItems
'获取所有选择的文件的完整路径,用于各种操作
GetPath = vrtSelectedItem
Next这时候可以使用FileDialog对象的Filters属性添加一个FileDialogFilters集合对象,把要筛选的
'如果单击了取消按钮则返回0
Else
End If
End With
'释放对象变量
Set oFD = Nothing
End Function


发表评论