上节我们讲到调用内置对话框的GetOpenFilename方法,但是该方法只能简单的返回选择的文件路径,不能返回文件夹,也不能对文件执行操作,这节我们再来看一个调用内置对话框的方法——FileDialog对象。 FileDialog对象有4个参数,如下 'msoFileDialogFilePicker 允许用户选择文件
'msoFileDialogFolderPicker 允许用户选择文件夹
'msoFileDialogOpen 允许用户打开一个文件
'msoFileDialogSaveAs 允许用户保存一个文件
分别是允许选择文件、允许选择文件夹、允许用户打开文件、允许用户将文件另存为,下面我们分别来看这4个参数的用法。 先来看第一种,选择文件并返回文件名 Sub test1() '选择文件
Dim dig
Set dig = Application.FileDialog(msoFileDialogFilePicker) '定义对象,指定参数
With dig
.AllowMultiSelect = True '允许多选
.Filters.Add 'Excel文件', '*.xls*', 1 '默认文件类型
.InitialFileName = ThisWorkbook.FullName ''d:\' '默认路径
.InitialView = msoFileDialogViewDetails '文件显示方式
.Title = '对话框测试' '对话框标题
If .Show = 0 Then 'show显示对话框,判断返回值
MsgBox '你点了取消'
Else
MsgBox dig.SelectedItems(1) '取得选择的文件名
End If
End With
End Sub
各个属性我就不说了,这里显示对话框用到的是show方法,而show方法是可以返回值的,返回0代表点了取消,否则返回-1。选择的文件名称是保存在SelectedItems数组中,通过该数组来调用相应的文件名,选了一个可以单独调用,多个就循环调用。 下面再来看怎样选取并返回一个文件夹路径,看代码 Sub test2() '选择文件夹
Dim dig
Set dig = Application.FileDialog(msoFileDialogFolderPicker) '选择文件夹
With dig
.AllowMultiSelect = True
.InitialFileName = 'D:\'
.Title = '对话框测试'
If .Show = 0 Then
MsgBox '你点了取消'
Else
MsgBox dig.SelectedItems(1)
End If
End With
End Sub
和第一个基本上一样,只不过将参数变为了msoFileDialogFolderPicker,不再多说。 再来看怎样打开选中的文件,看代码 Sub test3() '打开文件
Dim dig
Set dig = Application.FileDialog(msoFileDialogOpen)
With dig
.AllowMultiSelect = True
.Filters.Add 'Excel文件', '*.xls*', 1
.InitialFileName = 'D:\'
.Title = '对话框测试'
If .Show = 0 Then '判断是否点了取消
MsgBox '你点了取消'
Else
.Execute '执行打开命令
MsgBox '文件已打开'
End If
End With
End Sub
执行打开命令需要在Show方法之后调用Execute方法,而之前的两个代码是没有Execute方法的,如果在Show之后不执行Execute那这个代码也可以用来返回文件名,和前两个代码没有区别。 下面来看怎样将文件另存为,看代码 Sub test4() '另存文件
Dim dig
Set dig = Application.FileDialog(msoFileDialogSaveAs)
With dig
.AllowMultiSelect = True
.InitialFileName = ThisWorkbook.FullName
.Title = '对话框测试'
If .Show = 0 Then '判断是否点了取消
MsgBox '你点了取消'
Else
.Execute '执行打开命令
MsgBox '文件已保存'
End If
End With
End Sub
和前面打开文件一样,也是在Show之后执行Execute,不再多说。 本节示例文件下载地址:http://pan.baidu.com/s/1dDIjO7f。
|