在如何用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
发表评论