VBA 文件/文件夹对话框Application.FileDialog

SelectAFile.png

Application.FileDialog(DialogType)的配置参数和函数解释:

  • DialogType:
    Application.FileDialog(msoFileDialogFilePicker) - 选择文件
    Application.FileDialog(msoFileDialogFolderPicker) -选择文件夹
  • Title - 弹出文件选择窗口的标题。
  • AllowMultiSelect - 是否允许选择多个文件或者文件夹,True为多选,False为单选。
  • InitialFileName - 默认选择对话框的路径以及默认文件名
  • Filters.Clear - 清除当前的过滤规则。
  • Filters.Add description, criteria, position - 添加过滤规则
    description - 规则名称;
    criteria - 过滤规则,过滤txt结局的文件规则为“.txt”,同一条规则里添加多个过滤项通过“;”来隔开,例如同时过滤.xls和.xlsx的文件规则为".xlsx; *.xls"
    postion - 规则插入的位置,起始为1。
  • SelectedItems - 获取选择到的项,为数组,起始为1。
  • ButtonName - 选择按键名称。

1 文件选择对话框

源代码示例:

'#########################################################
'选择单个文件对话框
Sub SelectSingleFileDialog()
'通过对话框选择文件
With Application.FileDialog(msoFileDialogFilePicker)
    .Title = "Select A File"                        '选择窗口的标题
    .InitialFileName = "D:\TestFolder\TestFile.txt" '初次打开窗口的路径以及默认名称
    .AllowMultiSelect = False                       '是否允许选择多个文件
    .Filters.Clear                                  '清除现有规则
    .Filters.Add "Text File", "*.txt"               '增加规则
    .Filters.Add "EXCEL File", "*.xlsx; *.xls", 1   '增加规则到第一位
    .Filters.Add "All File", "*.*", 1               '增加规则到第一位
    If .Show Then                                   '显示文件选择对话框
        .ButtonName = "Select Me"
        Set ipath = .SelectedItems                  '获取选择项,无论是否选择一项还是多项,返回的选项都是多项
    End If
End With

If IsEmpty(ipath) Then Exit Sub     '如果按取消键,退出
ipath = ipath(1)                    '获取第一项选择
Debug.Print ipath                '输出选择文件名
End Sub

2 文件夹选择对话框

源代码示例:

'#########################################################
'选择一个文件夹
Sub SelectFolderDialog()
'通过对话框选择文件夹
With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Select Folders"
    If .Show Then
        ipath = .SelectedItems
    End If
End With

If IsEmpty(ipath) Then Exit Sub     '如果按取消键,退出
Debug.Print ipath(1)                       '输出文件夹路径
End Sub
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。