他山之石——VBA文件操作对话框

这部分还是很实用的,曾经使用这些方法帮助客户实现过一个小工具,很大程度提升了工作效率。

Option Explicit

'一 FileDialog 对象简介
 '提供文件对话框,功能与 Microsoft Office 应用程序中标准的“打开”和“保存”对话框类似。
 '利用这些对话框,解决方案的用户可以简便地指定解决方案中应该使用的文件和文件夹。

'
'“打开”对话框:让用户选择一个或多个可以在主机应用程序中使用 Execute 方法打开的文件。
'“另存为”对话框:让用户选择一个可以使用 Execute 方法保存当前文件的文件。
'“文件选取器”对话框:让用户选择一个或多个文件。用户选择的文件路径将捕获到 FileDialogSelectedItems 集合。
'“文件夹选取器”对话框:让用户选择一个路径。用户选择的文件路径将捕获到 FileDialogSelectedItems 集合。

'二 属性和方法
  
   '1 AllowMultiSelect 如果允许用户从文件对话框中选择多个文件,则返回 True。Boolean 类型,可读写
   '2 SelectedItems 选取的多个文件集合
   '3 InitialFileName 属性:设置初始路径和文件名称
   '4 InitialView 属性 :可以设置初始文件的显示样多
   '5 show 可以判断用户是否点击了取消按钮,如果点击取消会返回0,否则返回-1
   
    '选择并返回一组文件名和路径
      Sub f1()
        Dim f
        Dim dig As Object
        Set dig = Application.FileDialog(msoFileDialogOpen)
        With Application.FileDialog(msoFileDialogOpen)
           .AllowMultiSelect = True
           .Filters.Add "Excel文件", "*.xls", 1
           .InitialFileName = ThisWorkbook.FullName '"d:\"
           .InitialView = msoFileDialogViewDetails
           .Title = "对话框测试"
           .Show
           MsgBox .Show
          For Each f In .SelectedItems
            MsgBox f
          Next f
        End With
        Set dig = Nothing
      End Sub
   '选择并返回文件夹
     Sub F2()
      Dim dig As Object
      Set dig = Application.FileDialog(msoFileDialogFolderPicker)
       With dig
         .InitialFileName = "d:\"
         .Show
         MsgBox .SelectedItems(1)
       End With
     Set dig = Nothing
     End Sub
   '

Sub t10()
Dim f
 With Application.FileDialog(msoFileDialogOpen)
     .AllowMultiSelect = True
     .Filters = "Excel表格,*.xls"
     .InitialFileName = "测试.xls"
     .FilterIndex = 1
     .Title = "测试"
  End With
End Sub
Option Explicit

' 一、 概述基本语法

   'GetOpenFilename相当于Excel打开窗口,通过该窗口选择要打开的文件,并可以返回选择的文件完整路径和文件名。
     '注:此方法并不会真正打开文件?

  'Application.GetOpenFilename(文件类型筛选规则,优先显示第几个类型的文件,标题,是否允许选择多个文件名)
  
     
  
 '二、示例
   
      '1 打开类型只限excel文件
      
        '设置打开某类文件可以用下面的规则:
          
           '"文件类型说明文字,*.文件类型后辍"
      Sub t1()
        Dim f
        f = Application.GetOpenFilename("Excel文件,*.xls")
        MsgBox f
      End Sub
         
      '2、打开多种文件类型(word和excel)
        
       '打开多种文件类型,只需要用","隔开,添加新的文件类型说明和文件类型。
       
      Sub t2()
        Dim f
        f = Application.GetOpenFilename("Excel2003文件,*.xls,Word文件,*.doc")
        MsgBox f
      End Sub
  
      '3 打开多种文件类型,默认显示word文件
      
      Sub t3()
        Dim f
        f = Application.GetOpenFilename("Excel2003文件,*.xls,Word文件,*.doc,文本文件,*.txt", 2)
        MsgBox f
      End Sub
        
       '4 设置对话框名称
       
       Sub t4()
          Dim f
           f = Application.GetOpenFilename("Excel2003文件,*.xls,Word文件,*.doc,文本文件,*.txt", 2, "选择要汇总的文件")
           MsgBox f
      End Sub
   
       '5 选择多个文件,并以数组形式返回
      Sub t5()
        Dim f
        ChDrive "E"
        ChDir Application.Path
        'ChDir ".."
        f = Application.GetOpenFilename("Excel2003文件,*.xls,Word文件,*.doc,文本文件,*.txt", 1, MultiSelect:=True)
        MsgBox f(1)
      End Sub
 


     'GetSaveAsFilename语法:
         
         ' GetSaveAsFilename(默认显示的文件名,筛选条件,多个筛选类型时显示第几个,标题)
         '注:该窗口也会有实质性的保存操作.只作为返回文件名的一个途径

       Sub t1()
        Dim f
        f = Application.GetSaveAsFilename("示例.xls", "excel表格,*.xls", , "保存示例")
        MsgBox f
      End Sub
  
   'chdrive 盘符 可以改变默认驱动器
   'chdir  路径  可以改变默认路径
   
      Sub t6()
        Dim f
         ChDrive "E"
         ChDir ThisWorkbook.Path
        'ChDir ".."
        f = Application.GetOpenFilename("Excel2003文件,*.xls,Word文件,*.doc,文本文件,*.txt", 1, MultiSelect:=True)
       ' MsgBox f(1)
      End Sub

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值