zl程序教程

您现在的位置是:首页 >  其他

当前栏目

ExcelVBA打开文件对话框之.GetOpenFilename 方法

文件方法 打开 对话框 ExcelVBA
2023-06-13 09:13:56 时间

ExcelVBA打开文件对话框之Application.GetOpenFilename 方法

Application.GetOpenFilename 方法

显示标准的“打开”对话框,并获取用户文件名,而不必真正打开任何文件。

语法

表达式.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)

表达式 一个代表 Application 对象的变量。

参数

返回值

Variant

【说明】

在 FileFilter 参数中传递的该字符串由文件筛选字符串对以及后跟的 MS-DOS 通配符文件筛选规范组成,中间以逗号分隔。每个字符串都在“文件类型”下拉列表框中列出。例如,下列字符串指定两个文件筛选 - 文本和加载宏:“文本文件 (*.txt)、*.txt、加载宏文件 (*.xla)、*.xla”。

要为单个文件筛选类型使用多个 MS-DOS 通配符表达式,需用分号将通配符表达式分开。例如:“Visual Basic 文件 (*.bas; *.txt)、*.bas; *.txt”。

如果省略 FileFilter,则此参数默认为“所有文件 (*.*),*.*”。

本方法返回选定的文件名或用户输入的名称。返回的名称可能包含路径说明。如果 MultiSelect 为 True,则返回值将是一个包含所有选定文件名的数组(即使仅选定了一个文件名)。如果用户取消了对话框,则该值为 False。

本方法可能更改当前驱动器或文件夹。

【示例】

此示例显示“打开”对话框,并将文件筛选设置为文本文件。如果用户选择了文件名,则此代码在消息框中显示该文件名。

Sub mytest_GetOpenFilename()

fileToOpen = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*", , "打开文件", , True)

'MsgBox TypeName(fileToOpen)

If TypeName(fileToOpen) = "Boolean" Then MsgBox "你选择了“取消”,将要退出程序": Exit Sub

For Each rr In fileToOpen

MsgBox rr

Next

End Sub

下面是选择多个文件后的情况

下面是添加了chdrive指定文件夹后测试,选择“取消”后的

===【我的学习笔记】===

◆ 我的学习之返回值解析:

单选时,用typeName(obj)进行测试,选了文件时返回:String 取消时返回:Boolean

多选时,用typeName(obj)进行测试,选了文件时返回:Variant() 取消时返回:Boolean

综上所述,我们可以用 if TypeName(obj)="Boolean" Then msgbox "你选择了“取消”,将退出程序":exit sub

◆我的学习之“本方法可能更改当前驱动器或文件夹”

这个说明的意思是,程序第一次打开的对话框是,“我的电脑>我的文档”,如果你找到了你要的文件夹进行的操作,在程序所在的文件没有关闭的情况下,如果再一次打开,就会指向你刚才打开过的文件夹,如果你想要在程序一打开就方便的找到你现在所在的文件的文件夹,可以用ChDrive开修改打开的最初的文件夹。

修改代码为

Sub mytest_GetOpenFilename()

Dim strPath

strPath = ThisWorkbook.Path

ChDrive strPath

fileToOpen = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*", , "打开文件", , True)

'MsgBox TypeName(fileToOpen)

If TypeName(fileToOpen) = "Boolean" Then MsgBox "你选择了“取消”,将要退出程序": Exit Sub

For Each rr In fileToOpen

MsgBox rr

Next

End Sub

===今天学习到此===