分享

VBA调用内置对话框—FileDialog | VBA实例教程

 L罗乐 2016-09-16

上节我们讲到调用内置对话框的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



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多