首页 > 其他分享 >VBA 文件对话框

VBA 文件对话框

时间:2022-12-09 13:32:45浏览次数:33  
标签:文件 VBA 对话框 用户 Filters FileDialog 筛选

本文讲解 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

相关文章