|
FindFile 方法
显示“打开”对话框。
返回值:Boolean
说明:
本方法显示“打开”对话框并让用户打开一个文件。
如果成功打开一个新文件,则该方法返回True。
如果用户退出该对话框,则该方法返回False。
示例:
Dim blOpen As Boolean
Dim strMsg$
blOpen = Application.FindFile
'可以试试打开非EXCEL格式的文件
'说不定你会有新发现
strMsg = "没有打开文件"
If blOpen Then
strMsg = "打开了文件:" & ActiveWorkbook.FullName
End If
MsgBox strMsg
GetOpenFilename 方法
显示标准的“打开”对话框,并获取选中的文件名,而不必真正打开任何文件。
语法:
GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
FileFilter 可选, 一个指定文件筛选条件的字符串。
FilterIndex 可选, 指定默认文件筛选条件的索引号,
取值范围为 1 到 FileFilter 所指定的筛选条件数目。
如果省略该参数,或者该参数的值大于可用筛选条件数,则使用第一个。
Title 可选,指定对话框的标题。如果省略该参数,则标题为“打开”。
ButtonText 可选,仅限 Macintosh。
MultiSelect 可选,默认值为 False。
如果为 True,则允许选择多个文件名。
如果为 False,则只允许选择一个文件名。
返回值:Variant
说明:
FileFilter包含二部分:
1>是文件类型描述信息
2>是MS-DOS 通配符
这二部分中间以逗号分隔。
每个字符串都在“文件类型”下拉列表框中列出。
例如,“文本文件 (*.txt),*.txt,加载宏文件 (*.xla),*.xla”。
文本文件 (*.txt),加载宏文件 (*.xla)是文件类型描述信息
*.txt,*.xla是通配符
要为单个文件筛选类型使用多个 MS-DOS 通配符时,需用分号将通配符表达式分开。
例如:“Visual Basic 文件 (*.bas; *.txt),*.bas; *.txt”。
如果省略 FileFilter,则此参数默认为“所有文件 (*.*),*.*”。
本方法返回选定的文件名或用户输入的名称。
返回的名称可能包含路径说明。
如果 MultiSelect 为 True,则返回值将是一个包含所有选定文件名的数组(即使仅选定了一个文件名)。
如果用户取消了对话框,则该值为 False。
本方法可能更改当前驱动器或文件夹。
示例:
Dim fn
MsgBox CurDir
'显示当前路径,只为测试会改变当前驱动器说明
With Application
'注意文件类型描述信息中的(*.xls;*.xlsm)与文件通配符*.xls;*.xlsm
' 如果只是空的(),那不会受影响
fn = .GetOpenFilename("Excel文件(*.xls;*.xlsm),*.xls;*.xlsm")
'下面这句就会报错,一个标点符号的出入导致了出错
'fn = .GetOpenFilename("Excel文件(*.xls,*.xlsm),*.xls;*.xlsm")
'下面这句运行后,只能筛选xlsm格式的
fn = .GetOpenFilename("Excel文件(*.xlsm),*.xls;*.xlsm")
'下面这句运行后,只能筛选xls格式的
fn = .GetOpenFilename("Excel文件(*.xls),*.xls;*.xlsm")
'所以在文件描述符中,要注意使用()的情况,
‘要么不用,要么就用完整的文件通配符描述
'FilterIndex参数
MsgBox .GetOpenFilename(filefilter:="低版本格式,*.xls, 高版本格式,*.xlsx," & _
"启用宏的工作簿,*.xlsm,加载宏工作簿,*.xla;*.xlam", _
FilterIndex:=3, Title:="测试GetOpenFilename")
'MultiSelect参数
fn = .GetOpenFilename(filefilter:="低版本格式,*.xls, 高版本格式,*.xlsx," & _
"启用宏的工作簿,*.xlsm,加载宏工作簿,*.xla;*.xlam", _
FilterIndex:=3, Title:="测试MultiSelect参数", MultiSelect:=True)
If IsArray(fn) Then
'当返回结果是数组时,直接用=false,<>false判断产生类型不匹配的错误
'IsArray检测是否为数组
MsgBox Join(fn, ",")
'join把一维数组转化成字符串,参数中的","用来充当各个元素之间的分隔符。
End If
End With
GetSaveAsFilename 方法
显示标准的“另存为”对话框,获取想要保存的文件名,而无须真正保存任何文件。
语法:
GetSaveAsFilename(InitialFilename, FileFilter, FilterIndex, Title, ButtonText)
InitialFilename 可选 Variant 指定建议的文件名。
如果省略该参数,Microsoft Excel 使用活动工作簿的名称。
可指定一个具体的路径,或单一的文件名,或路径+文件名
FileFilter 可选,一个指定文件筛选条件的字符串。
FilterIndex 可选,指定默认文件筛选条件的索引号。
Title 可选,指定对话框的标题。如果省略该参数,则使用默认标题。
ButtonText 可选,仅限 Macintosh。
返回值:Variant
说明:
FileFilter,FilterIndex,Title,ButtonText可参考GetOpenFileName方法。
InitialFilename可以是具体的路径,单一文件名,或者具体的路径+文件名。
本方法返回选定的文件名或用户输入的名称。
返回的名称可能包含路径说明。如果用户取消了对话框,则该值为 False。
本方法可能更改当前驱动器或文件夹。
示例:
MsgBox Application.GetSaveAsFilename("d:\", "启用宏的工作簿,*.xlsm")
MsgBox Application.GetSaveAsFilename("d:\test.xlsm", "启用宏的工作簿,*.xlsm")
MsgBox Application.GetSaveAsFilename("test.xlsm", "启用宏的工作簿,*.xlsm")
|
|