本文讲解 VBA 文件对话框 的使用
Sub test()
Dim fd As FileDialog
'定义FileDialog对象变量
Set fd = Application.FileDialog(1)
'实例化一个FileDialog对象变量
'FileDialog 对象的类型?
'名称 值 说明
'msoFileDialogFilePicker 3 “文件选取器”对话框。
'msoFileDialogFolderPicker 4 “文件夹选取器”对话框。
'msoFileDialogOpen 1 “打开”对话框。
'msoFileDialogSaveAs 2 “另存为”对话框。
With fd
.Title = "请选择文件"
'设置或获取使用 FileDialog 对象显示的文件对话框的标题。可读/写。
.Filters.Clear
' 删除筛选的项目
.Filters.Add "word文件", "*.doc;*.docx", 1
.Filters.Add "excel文件", "*.xls;*.xlsx", 2
.Filters.Add "Images", "*.gif; *.jpg", 3
' 添加筛选项目
'弹出选择文件对话框时,默认会显示所有文件。
'可以使用FileDialog对象的Filters属性添加一个FileDialogFilters集合对象,把要筛选的文件模式写入
'使用FileDialogFilters集合对象的Add方法添加要筛选的文件,它的语法如下:
'expression .Add(Description, Extensions, Position)
'Description参数为要筛选的文件的描述字符,比如”Excel 文件”,
'Extensions参数为要筛选的文件夹的扩展名,这里可以使用?和*作为通配符,比如”*.xls*”。
'当要显示多个文件的扩展名时,可以使用;分隔,比如”*.xls*;*.doc*”。
'Position参数为要显示在筛选下拉列表框中的位置
.FilterIndex = 2
'FilterIndex属性表示要默认显示的 “文件筛选类型”,其对应 Filters属性的 “Position”参数
.AllowMultiSelect = True
'如果允许用户从文件对话框中选择多个文件,则为 True。可读/写。
'此属性对“文件夹选取器”对话框或“另存为”对话框无效,
'因为无法从这些类型的文件对话框中选择多个文件。
.Show
'显示文件对话框并返回一个 Long 类型的值
'指示用户按下的是“操作”按钮 (-1) 还是“取消”按钮 (0)。
'当用户选择文件(夹)后,返回 -1;当用户未选择或者直接关闭对话框,则返回 0
'因此可以使用该方法返回的值判断用户是否选取文件/文件夹
'在调用 Show 方法时,在用户关闭文件对话框之前不会执行其他代码。
'在“打开”和“另存为”对话框中,在使用了 Show 方法后会立即使用 Execute 方法执行用户操作。
Dim item
For Each item In .SelectedItems
MsgBox item
Next item
' MsgBox .SelectedItems.Count
' MsgBox .SelectedItems(1)
'获取一个 FileDialogSelectedItems 集合。
'此集合包含用户在使用 FileDialog 对象的 Show 方法显示的文件对话框中所选的文件的路径列表。只读。
.Execute
'Execute 方法
'当用户选择某个文件后,若 FileDialog 类型为 msoFileDialogOpen 或 msoFileDialogSaveAs 时,
'则该对象的 Execute 方法执行打开或者保存文件的操作。
End With
Set fd = Nothing
'清空对象
End Sub
标签:文件,VBA,对话框,用户,Filters,FileDialog,筛选
From: https://blog.51cto.com/shenjiren/5924902