目录
Application. GetSaveAsFilename方法
码1
使用Application.GetOpenFilename方法显示打开文件的对话框,然后根据用户选择的文件进行相应的操作。
Option Explicit
Sub 选择文件1()
Dim fileName As String
fileName = Application.GetOpenFilename( _
filefilter:="Excel 文件,xlsx,Excel 2003文件,*.xls", _
FilterIndex:=2, _
Title:="选择文件")
If fileName = "false" Then
MsgBox "取消了"
Else
MsgBox "选择的文件为:" & fileName
End If
End Sub
Application.GetOpenFilename方法
Application. GetOpenFilename方法可以显示一个打开文件的窗口,并返回用户所选择的文件路径,其语法为:
Application.GetOpenFilename(FileFilter,Filterlndex,Title,ButtonText,MultiSelect)
参数FileFilter为一个文本字符串,表示文件的筛选。该筛选文本用以筛选不同扩展名的文件,各个筛选类型之间以逗号隔开,按照“筛选说明,筛选通配符”的形式成对出现。如需要提供两个筛选:文本文件(Txt)和备份文件(BAK),则可以使用以下文本作为该参数:
文本文件(Txt),*.Txt,备份文件(BAK),*.BAK
- 参数Filterlndex为一个大于0的整型数值,表示默认筛选的序号。
- 参数Title为一个文本,表示打开文件对话框的标题。若该参数省略,则默认为“打开”。
- 参数ButtonText为一个文本,表示对话框中按钮的显示文字。该参数只在Macintosh系统下有效。
- 参数MultiSelect为一个逻辑值。当设置为True时,表示允许选择多个文件,反之则为只能选择一个文件。
该方法具有返回值,可以根据用户的不同选择返回不同的值。
- 若用户未选择任何文件或直接关闭窗口,则返回False。
- 选择若将MultiSelect设置为False,且选择了一个文件,则返回一个文本类型的字符,表示该选中文件的完整路径。
- 若将MultiSelect设置为True,且选择了若干个文件,则返回一个以1为下限的一位数组,其数组元素为选中的所有文件的完整路径。
Application. GetOpenFilename方法仅能返回用户选择的文件的完整路径,而不能打开该文件。因而通常利用该方法获取用户指定的文件的完整路径,然后进行相应的操作。一般可以声明一个变量用以接受该方法的返回值。由于该方法的返回值可能为逻辑值、文本或者数组,因而可以声明一个变体型的变量。首先需要判断该变量所接受的返回值是否为False,若为False,则表示用户放弃选择,反之,可以根据参数MultiSelect的值对文本或者数组进行访 问,以获得选中的文件的完整路径。
码2
使用FileDialog对象打开文件对话框,并获取用户选择的文件。
Sub 选择文件2()
Dim fileName As String
With Application.FileDialog(msoFileDialogOpen)
.Filters.Add "Excel", "*.xlsx", 1
.Filters.Add "Excel 2003", "*.xls", 2
.FilterIndex = 2
.AllowMultiSelect = False
If .Show = -1 Then
fileName = .SelectedItems(1)
MsgBox "选择的文件是:" & fileName
Else
MsgBox "取消了"
End If
End With
End Sub
FileDialog对象
- FileDialog对象是Excel程序对象(Application)下的一个子对象。使用该对象可以打开一个文件对话框供用户执行打开等操作。该对象包含四种类型:msoFileDialogOpen(打开文件对话框)、
- msoFileDialogSaveAs(另存文件对话框)、
- msoFileDialogFilePicker(选择文件对话框,并不执行打开操作)
- msoFileDialogFolderPicker(文件夹选择对话框)。当
需要使用FileDialog对象对文件进行操作时,可以声明一个FileDialog类型的对象,然后将其赋值为Application. FileDialog中四种类型的一种。一旦确定了类型,则该对象不能转换为其他类型。如以下参考语句创建了一个可以选择文件夹的对话框:
Dim FD As FileDialog
Set FD = Application. FileDialog(msoFileDialogFolderPicker)
FileDialog对象的常用属性
FileDialog对象的常用属性与Application. GetOpenFilename的参数类似,设置方法也基本相同。
FileDialog对象的常用属性
值 | 说 明 |
Filters | 文件筛选文本对象。与GetOpenFileName不同 |
FilterIndex | 文件筛选的序号 |
ButtonName | 按钮的显示文本 |
Title | 对话框的标题 |
AllowMultiSelect | 是否允许选择多个文件 |
InitialFileName | 初始的文件名称(默认的文件名称) |
InitialView | 对话框的文件排列的默认视图 |
使用FileDialog对象的属性Filters添加筛选
Filters属性是FileDialog对象的一个重要属性,其返回一个FileDialogFilters集合对象。可以使用其Clear方法和Delete方法删除筛选的项目,也可以使用Add方法添加筛选项目。Add方法的语法如下:
Filters.Add(Descriptions,Extensions,[Position])
参数Descriptions为文本,表不又件类型的描述。
参数Extensions为文本,表示文件类型的扩展名,可以由逗号隔开多个相同描述的扩展名,如“*.gif:*.jpg:*.jpeg。
参数Position表示添加的文件类型的项目位置,该参数从1开始。
本例需要添加两个Excel不同版本的文件类型,因而使用两句Add方法进行添加。
FileDialog对象的Show方法和Execute方法
当设置完FileDialog对象的基本属性后,需要使用Show方法打开对话框。Show方法具有一个返回值:当用户选择文件后,返回-1;当用户未选择文件或者直接关闭对话框,则返回0。
当用户选择某个文件后, 若FileDialog类型为msoFileDialogOpen或msoFileDialogSaveAs,则该对象的Executec方法执行打开或者保存文件的操作。
遍历通过FileDialog对象选择的文件
当Show方法返回值为一1时,则表示用户选择了文件。此时FileDialog对象的Selectedltems属性将返回一个Selectedltems对象。该对象包含了所有选中文件的集合,可以通过For Each—Next的循环方法直接遍历Selectedltems对象,从而获取每个选中的文件的完整路径及名称。
Application. GetSaveAsFilename方法
与Application. GetOpenFilename方法相对应的,Excel VBA中提供了另一个方法Application. GetSaveAsFilename,该方法可以提供一个“另存为”对话框。与
GetOpenFilename方法不同的是,GetSaveAsFilename可以输入一个不存在的文件名。该方法将返回该文件的完整路径,其语法为:
Application.GetSaveAsFilename(InitialFilename,FileFilter,Filterlndex,Title,ButtonText)
其中的参数与GetOpenFilename大致相同。其中,参数InitiaIFileName为设置默认的文件名,若省略此参数,则以当前文件作为文件名。
Application. Dialog对象
Application. Dialog对象是Excel内置对话框的集合。利用该对象可以调用Excel的内置对话框,其语法为:
Application.Dialogs(DialogsType).Show
其中,DialogsType为内置对话框的类型。
调用内置对话框后,相当于从菜单或者功能区打开了该对话框,期间的每个操作都将影响工作表中的数据。