语法:
expression.FileDialog(fileDialogType )
expression,一个代表 Application 对象的变量。
通常写作 Application.filedialog(fileDialogType)
参数
名称 | 必需/可选 | 数据类型 | 说明 |
---|---|---|---|
fileDialogType | 必需 | MsoFileDialogType | 文件对话框的类型 |
其中,fileDialogType 必需 MsoFileDialogType 文件对话框的类型。
MsoFileDialogType 可为下述常量之一:
常量 | 值 | 说明 |
---|---|---|
msoFileDialogOpen | 1 | 允许用户打开文件 |
msoFileDialogSaveAs | 2 | 允许用户保存文件 |
msoFileDialogFilePicker | 3 | 允许用户选择文件 |
msoFileDialogFolderPicker | 4 | 允许用户选择文件夹 |
FildDialog 对象的 Show 方法
当设置完FileDialog 对象的基本属性后,需要使用 Show 方法打开对话框。
Show 方法具有一个返回值:当用户选择文件(夹)后,返回 -1;当用户未选择或者直接关闭对话框,则返回 0。
FildDialog 对象的Execute 方法
当用户选择某个文件后,若 FileDialog 类型为 msoFileDialogOpen 或 msoFileDialogSaveAs 时,则该对象的 Execute 方法执行打开或者保存文件的操作。
FildDialog对象的常用属性及其介绍
值 | 说明 | 读/写 |
---|---|---|
.Filters | 文件筛选文本对象 | 只读 |
.FilterIndex | 文件筛选的序号 | 读/写 |
.ButtonName | 按钮显示的文本 | 读/写 |
.Title | 对话框的标题 | 读/写 |
.AllowMultiSelect | 是否允许选择多个文件 | 读/写 |
.InitialFileName | 可选项,默认打开的地址 | 读/写 |
.InitialView | 文件排列的默认视图 | 读/写 |
.SelectedItems | 获取 FileDialogSelectedItems 集合 | 只读 |
-
Filters属性,返回一个FileDiabogFilters集合对象。可以使用其Clear方法和Delete方法删除筛选的项目,也可以使用Add方法添加筛选项目,其Add方法如下(参考 “示例1):
Filters.add(Descriptions, Extensions, [Position])
参数 | 类型 | 说明 | 示例 |
---|---|---|---|
Descriptions | 文本 | 文件类型的描述 | — |
Extension | 文本 | 文件类型的扩展名,可以由逗号或分号隔开多个相同描述的扩展名 | 如:*.gif, *.jpg, *.jpeg |
Position | — | 添加文件类型的项目位置,该参数从1开始 | — |
- FilterIndex属性表示要默认显示的 “文件筛选类型”,其对应 Filters属性的 “Position”参数,参考 “示例1”
示例1
Sub Main()
Dim fd As FileDialog
Dim vrtSelectedItem As Variant
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.Filters.Clear '清除现有的文件类型
.Filters.Add "Images", "*.gif; *.jpg; *.jpeg", 1 '添加选择文件类型
.Filters.Add "自定义格式类型", "*.格式1; *.格式2", 2
.Filters.Add "所有文件", "*.*", 3
.FilterIndex = 2 '默认显示的 “文件筛选类型”
If .Show = -1 Then '显示窗体
For Each vrtSelectedItem In .SelectedItems '遍历所有选择的文件
MsgBox "Selected item's path: " & vrtSelectedItem
Next vrtSelectedItem
Else
End If
End With
Set fd = Nothing '清空对象
End Sub
- ButtonName 属性,读/写,设置或获取代表文件对话框中动作按钮上所显示文本的 String 类型的值,通常可以使用其默认属性,无需特殊设置。
- Title属性,读/写,设置对话框标题,其长度不可超过127字符,通常可使用其默认属性,无需单独设置。
- AllowMultiSelect 属性,读/写,是否允许选择多个文件,True 允许多选,False 不允许多选
注:- 此属性对 “文件夹选取器” 对话框或 “另存为” 对话框无效,因为用户永远无法从这些类型的文件对话框中选择多个文件。
- InitialFileName 属性,读/写,设置或返回一个 String 类型的值,代表文件对话框中初始显示的路径或文件名。
注:- 指定文件名时可以使用 * 和 ? 通配符,但在指定路径时则不能使用它们。
- 如果指定了路径而没有指定文件名,则对话框中将显示文件筛选器所允许的所有文件。
- 如果指定了位于初始文件夹中的某个文件,则对话框中只显示该文件。
- 如果指定了并不存在于初始文件夹中的文件名,则对话框将不包含任何文件。
- 你在 InitialFileName 属性中指定的文件类型将覆盖文件筛选器设置。
- 如果指定了无效路径,则将使用上次使用的路径。
- 如果使用无效路径,则系统会向用户发出警告消息。
- 将此属性设置为长度超过 256 个字符的字符串会导致运行时错误。
- InitialView 属性,读/写,获取或设置一个 “MsoFileDialogView ” 常量, 该常量代表文件和文件夹在文件对话框中的默认显示样式。
其值可以参考链接: MsoFileDialogView 枚举 (Office) - SelectedItems 属性,只读,获取 FileDialogFilters 集合
当 FileDialog 对象的方法 Show = -1,即用户选择了文件(夹)对象,则返回用户在文件对话框中所选的文件的路径列表。
示例
在此示例中,Microsoft Excel 打开文件对话框,允许用户选择一个或多个文件。 选择这些文件后,Excel 会在单独的消息中显示每个文件的路径。
Sub UseFileDialogOpen()
Dim lngCount As Long
With Application.FileDialog(msoFileDialogOpen) '对话框为 打开文件 样式
.AllowMultiSelect = True
.Show
For lngCount = 1 To .SelectedItems.Count
MsgBox .SelectedItems(lngCount)
Next lngCount
End With
End Sub
以下代码创建一个选择文件夹的对话框:
Sub UseFolder
dim fd as FileDialog
dim fp as string
Set fd = Application.FileDialog(msoFileDialogFolderPicker) '对话框为 选择文件夹 样式
With fd
.InitialFileName = ActiveWorkbook.path
If .Show = -1 Then '如果进行了选择并确认
fp = .SelectedItems(1) 'fp = 选中的文件夹地址
Msgbox fp
Else
Set fd = Nothing
Exit Sub '退出程序
End If
End With
end Sub
自定义示例:
With Application.FileDialog(fileDialogType)
.InitialFileName = filepath '可选项,默认打开的地址
.AllowMultiSelect = False
If .Show Then P = .SelectedItems(1) Else: Exit Sub
End With