编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

EXCEL VBA学习笔记:VBA弹出选择文件或文件夹的窗口(二)

wxchong 2025-03-20 20:15:06 开源技术 24 ℃ 0 评论

Application.FileDialog 文件对话框 操作方法。

语法:Application.FileDialog(FileDialogType) FileDialogType 是必须的,对应的类型如下:msoFileDialogFilePicker (数字简写 3) “文件选取器”对话框;msoFileDialogFolderPicker (数字简写 4) “文件夹选取器”对话框;msoFileDialogOpen (数字简写 1) “打开”对话框;msoFileDialogSaveAs (数字简写 2) “另存为”对话框。

With Application.FileDialog(msoFileDialogFilePicker)  '“文件选取器”对话框
      .AllowMultiSelect = False      '不可以多选
      .Filters.Add "Excel Files", "*.xls,*.xlsx"   '文件筛选
    If .Show = -1 Then      '执行Show操作,并判断是否选择了文件
      GOF = .SelectedItems(1)
    Else 
       MsgBox "未选择文件,程序中止"
       Exit sub
   	End If
End With

(1) Filters.Add 方法。在“文件”对话框的“文件类型”下拉列表框的筛选器列表中添加一个新的文件筛选器。示例语句: .Filters.Clear ;.Filters.Add "Excel Files", "*.xls,*.xlsx"

(2) FileDialog.Title 属性。设置FileDialog 弹出窗口的标题。.Title= “请选择正确的文件或文件夹”

(3)
FileDialog.AllowMultiSelect 属性。如果允许从文件对话框中选择多个文件,则为 True。说明:此属性对“文件夹选取器”对话框和“另存为”对话框无效。

(4) FileDialog.Show 方法:判断按下的是“打开”按钮 (点击的这个按钮,Show被赋值为 -1) 还是“取消”按钮 (0)。在“msoFileDialogOpen”和“msoFileDialogSaveAs”对话框中,在使用了 Show 方法后,使用 .Execute ,就会执行Open或SaveAs操作。

可以看出,只需要打开文件,用FileDialog(msoFileDialogOpen)比GetOpenFilename更简单、直接些。注:FileDialog要执行Show语句才会弹出窗口(这点不同于GetOpenFilename), Execute必须在Show执行后才会有效。

(5)
FileDialog.InitialFileName 属性

设置为一个 String 类型的值,代表文件对话框中初始显示的路径或文件名。说明:在指定文件名时可以使用 '*' 和 '?' 通配符,但是指定路径时不能使用这些通配符。语句示例.InitialFileName = "E:\temp\网点日常运行情况概览*.xls" 弹出的对话框中将只显示“网点日常运行情况概览*”的文件,文件夹定位在E:\temp。

如果指定了路径而没有指定文件名,则对话框中将显示文件筛选器所允许的所有文件。如果指定了位于初始文件夹中的某个文件,则对话框中只显示该文件。如果指定了初始文件夹中不存在的某个文件名,则对话框中将不包含文件。在 InitialFileName 属性中指定的文件类型将覆盖文件筛选器的设置。

通过InitialFileName 属性,可以控制“弹出对话框”所显示的文件夹,不用到处找需要选取的文件所在的文件夹。

下面为“多选文件”的示例语句:

Sub filedia()
    With Application.FileDialog(msoFileDialogOpen)
        .Title = "请选择文件"
        .AllowMultiSelect = True
        .InitialFileName = "E:\temp"
        .Filters.Add "Excel Files", "*.xls,*.xlsx"
        If .Show = True Then
          Set GOF = .SelectedItems
       Else: Exit Sub
       End If
  End With

.SelectedItems 是个类似“字典”结构的对象,赋值给GOF(要用Set),然后再取出文件名称。(多选的情况下,Show之后执行Execute,会同时将选择的文件都打开。Execute不像SelectedItems,有SelectedItems(1),它不能写成Execute(1)。

下为Application.FileDialog 选取一个文件夹的语句:

 With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "请选择一个文件夹"
        .InitialFileName = "E:\"
        If .Show = -1 Then
           Fd = .SelectedItems(1)
       Else: Exit Sub
       End If
 End With

附:FileLen(fn) fn为一个文件全路径+名称,FileLen函数得到文件大小,以“字节”为单位

FileDateTime(fn) ,FileDateTime函数得到“文件最后修改的时间”

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表