FileDialog对话框的使用

Application.FileDialog()对象
一.用于打开一个对话框,获取一个或多个文件名或者文件夹名称(打开类型取决于参数类型)

Application.FileDialog 属性 (Excel)

解决问题:

1.要导入或者输出表格只能放在某些特定文件夹下(如当前工作簿文件夹下)

运行效果:弹出对话框选择文件或者文件夹,方便导入或者输出表格

本文内容

  1. 语法
  2. 参数
  3. 备注
  4. 示例

返回一个 FileDialog 对象,它表示文件对话框的实例。

语法

expression.FileDialog (fileDialogType)

expression:表示 Application 对象的变量。

参数

名称 必需/可选 数据类型 说明
fileDialogType 必需 MsoFileDialogType 文件对话框的类型。

备注

MsoFileDialogType 可为下述常量之一:

  • msoFileDialogFilePicker。 允许用户选择文件。
  • msoFileDialogFolderPicker。 允许用户选择文件夹。
  • msoFileDialogOpen。 允许用户打开文件。
  • msoFileDialogSaveAs。 允许用户保存文件。

示例1.msoFileDialogFolderPicker允许用户选择文件文件夹

Sub UseFileDialogOpen()
 
    Dim lngCount As Long
 
    ' Open the file dialog
    With Application.FileDialog(msoFileDialogFolderPicker) '选择文件夹msoFileDialogFolderPicker
    ' With Application.FileDialog(msoFileDialogSaveAs) ’保存文件msoFileDialogFolderPicker
        .AllowMultiSelect = True '允许多选,选文件夹时,只能单选,若选文件时可按住shift多选。
       
        .Title = "测试"         '窗口标题
        .ButtonName = "就他了"  '需要放在show方法之前
         .Show                  '显示出来
 
        ' Display paths of each file selected
        For lngCount = 1 To .SelectedItems.Count
            MsgBox .SelectedItems(lngCount) '返回包括文件路径的文件名
        Next lngCount
 
    End With
 
End Sub


运行后效果

1.

Snipaste_2023-07-05_21-36-28.png

2.选择文档这个文件夹

3.通过消息对话框输出所选文件夹的路径名称

输出效果.png

示例2.msoFileDialogSaveAs显示为另存为标题,

说明:实际返回为一个文件名称,此名称包含文件所在的文件夹

新建一个文件并且弹出对话框选择保存文件夹

Sub UseFileDialogOpen()
 
    Dim lngCount As Long
 
    ' Open the file dialog
    With Application.FileDialog(msoFileDialogFolderPicker) '选择文件夹msoFileDialogFolderPicker
    ' With Application.FileDialog(msoFileDialogSaveAs) ’保存文件msoFileDialogFolderPicker
        .AllowMultiSelect = True '允许多选,选文件夹时,只能单选,若选文件时可按住shift多选。
       
        .Title = "测试"         '窗口标题
        .ButtonName = "就他了"  '需要放在show方法之前
         .Show                  '显示出来
 
        ' Display paths of each file selected
        For lngCount = 1 To .SelectedItems.Count
            MsgBox .SelectedItems(lngCount) '返回包括文件路径的文件名
        Next lngCount
 
    End With
 
End Sub

文件筛选器:属性方法

Application.FileDialog() 的各种 方法

1.Application.FileDialog() .Filters属性

用途:用于筛选要选择的文件(根据后缀名称筛选)

关键代码说明

Dim fd As FileDialog' 1.申明一个 FileDialog 对象.

2.创建一个FileDialog 对象.
Set fd = Application.FileDialog(msoFileDialogFilePicker) '文件选择
With fd

.Filters.Clear '清除之前的文件扩展名
'添加一个包含 xls 和 xlsm图像的过滤器,并将其作为列表中的第一项。
.Filters.Add "excel工作簿", "*.xls; .xlsm; .xls", 1
.Filters.Add "word工作簿", "
.doc; *.docx", 2 '可以添加多个文件后缀名,后面数字2表示第二位
end with

示例打开一个文件筛选器:限制只能选择excel 文件、word文件

Sub Main()
 
 '申明一个 FileDialog 对象.
 Dim fd As FileDialog
 
 '创建一个FileDialog 对象.
 Set fd = Application.FileDialog(msoFileDialogFilePicker) '文件选择
 
 
 '定义一个变量去获得路径

 'the variable must be a Variant because For Each...Next
 'routines only work with Variants and Objects.
 Dim vrtSelectedItem As Variant
 
 'Use a With...End With block to reference the FileDialog object.
 With fd
 
   .Filters.Clear                                        '清除之前的文件扩展名
   .Filters.Add "excel工作簿", "*.xls; *.xlsm; *.xls*", 1
   .Filters.Add "word工作簿", "*.doc; *.docx", 2  '可以添加多个文件后缀名,后面数字2表示第二位
   '添加一个包含 xls 和 xlsm图像的过滤器,并将其作为列表中的第一项。
   
 
'使用 Show 方法显示 File Picker 对话框并返回用户的操作。
'如果用户按下按钮。
   If .Show = -1 Then
 
 'Step through each string in the FileDialogSelectedItems collection.
      For Each vrtSelectedItem In .SelectedItems 'vrtSelectedItem包含所选的文件路径,下面输出路径
      
       MsgBox "Selected item's path: " & vrtSelectedItem
   
     Next vrtSelectedItem
 '如果用户取消
 Else
 End If
 End With
 
 'Set the object variable to Nothing.
 Set fd = Nothing
 
End Sub


运行效果:

筛选器输出效果.png

本文内容

  1. 语法
  2. 返回值
  3. 示例
    示例来源于微软官方
  4. 另请参阅

获取 FileDialogFilters 集合。 只读。

语法

expression.Filters

expression 一个代表 FileDialog 对象的变量。

返回值

FileDialogFilters

示例

以下示例使用 FileDialog 对象显示“文件选取器”对话框,并在消息框中显示每个选定的文件。 该示例还将添加一个名为 Images 的新文件筛选器。

FileDialog的所有方法和属性

FileDialog.png

应用3获取所选文件名并且打开所选文件


 With Application.FileDialog(msoFileDialogFilePicker)
   .AllowMultiSelect = True '允许多选
   .InitialFileName = InitialFileName ’初始文件路径,需要先定义
   .Filters.Add "Excel(*.xls*)", "*.xls*", 1
   .Title = "选择文件"
  
If .Show = -1 Then
Tem_Count = 0 '记录所选文件个数
For Each vrtSelectedItem In .SelectedItems '返回文件路径的合集,vrtSelectedItem为variant变量需要先定义好
  Tem_Count = Tem_Count + 1 ’计数加1
   Str_Name = vrtSelectedItem  'Str_Name为string 类型变量
   str_ArrFilePath(Tem_Count) = Str_Name '存入文件名
   MsgBox Str_Name '输出文件名
Next vrtSelectedItem
Else
   Exit Sub ’取消选择则退出
End If
End With

for i=1 to Tem_Count 
Workbooks.Open str_ArrFilePath(i)  '打开所选文件
next
Set wk = ActiveWorkbook
TemWBName = wk.Name

版权声明:
作者:感冒的梵高
链接:https://www.techfm.club/p/82602.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>