VBA 文件对话框

语法:

	expression.FileDialog(fileDialogType )
	expression,一个代表 Application 对象的变量。
	通常写作	 Application.filedialog(fileDialogType)

参数

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

其中,fileDialogType 必需 MsoFileDialogType 文件对话框的类型。
MsoFileDialogType 可为下述常量之一:

常量说明
msoFileDialogOpen1允许用户打开文件
msoFileDialogSaveAs2允许用户保存文件
msoFileDialogFilePicker3允许用户选择文件
msoFileDialogFolderPicker4允许用户选择文件夹

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 不允许多选
    注:
    1. 此属性对 “文件夹选取器” 对话框或 “另存为” 对话框无效,因为用户永远无法从这些类型的文件对话框中选择多个文件。
  • InitialFileName 属性,读/写,设置或返回一个 String 类型的值,代表文件对话框中初始显示的路径或文件名。
    注:
    1. 指定文件名时可以使用 * 和 ? 通配符,但在指定路径时则不能使用它们。
    2. 如果指定了路径而没有指定文件名,则对话框中将显示文件筛选器所允许的所有文件。
    3. 如果指定了位于初始文件夹中的某个文件,则对话框中只显示该文件。
    4. 如果指定了并不存在于初始文件夹中的文件名,则对话框将不包含任何文件。
    5. 你在 InitialFileName 属性中指定的文件类型将覆盖文件筛选器设置。
    6. 如果指定了无效路径,则将使用上次使用的路径。
    7. 如果使用无效路径,则系统会向用户发出警告消息。
    8. 将此属性设置为长度超过 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

  • 6
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值