Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4085|回复: 3

[分享] 【烟花原创】VBA零基础之第90篇 Application对象(八)

[复制链接]
发表于 2014-1-26 17:08 | 显示全部楼层 |阅读模式
FindFile 方法
 显示“打开”对话框。
 返回值:Boolean
 说明:
  本方法显示“打开”对话框并让用户打开一个文件。
  如果成功打开一个新文件,则该方法返回True。
  如果用户退出该对话框,则该方法返回False。
 示例:
  Dim blOpen As Boolean
  Dim strMsg$
  blOpen = Application.FindFile
  '可以试试打开非EXCEL格式的文件
  '说不定你会有新发现
  strMsg = "没有打开文件"
  If blOpen Then
   strMsg = "打开了文件:" & ActiveWorkbook.FullName
  End If
  MsgBox strMsg

GetOpenFilename 方法
 显示标准的“打开”对话框,并获取选中的文件名,而不必真正打开任何文件。
 语法:
  GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
   FileFilter 可选, 一个指定文件筛选条件的字符串。
   FilterIndex 可选, 指定默认文件筛选条件的索引号,
    取值范围为 1 到 FileFilter 所指定的筛选条件数目。
    如果省略该参数,或者该参数的值大于可用筛选条件数,则使用第一个。
   Title 可选,指定对话框的标题。如果省略该参数,则标题为“打开”。
   ButtonText 可选,仅限 Macintosh。
   MultiSelect 可选,默认值为 False。
    如果为 True,则允许选择多个文件名。
    如果为 False,则只允许选择一个文件名。
 返回值:Variant
 说明:
  FileFilter包含二部分:
   1>是文件类型描述信息
   2>是MS-DOS 通配符
  这二部分中间以逗号分隔。
  每个字符串都在“文件类型”下拉列表框中列出。
  例如,“文本文件 (*.txt),*.txt,加载宏文件 (*.xla),*.xla”。
   文本文件 (*.txt),加载宏文件 (*.xla)是文件类型描述信息
   *.txt,*.xla是通配符
  要为单个文件筛选类型使用多个 MS-DOS 通配符时,需用分号将通配符表达式分开。
  例如:“Visual Basic 文件 (*.bas; *.txt),*.bas; *.txt”。
  如果省略 FileFilter,则此参数默认为“所有文件 (*.*),*.*”。

  本方法返回选定的文件名或用户输入的名称。
  返回的名称可能包含路径说明。
  如果 MultiSelect 为 True,则返回值将是一个包含所有选定文件名的数组(即使仅选定了一个文件名)。
  如果用户取消了对话框,则该值为 False。
  
  本方法可能更改当前驱动器或文件夹。
 示例:
  Dim fn
  MsgBox CurDir
  '显示当前路径,只为测试会改变当前驱动器说明
  With Application
   '注意文件类型描述信息中的(*.xls;*.xlsm)与文件通配符*.xls;*.xlsm
   ' 如果只是空的(),那不会受影响
   fn = .GetOpenFilename("Excel文件(*.xls;*.xlsm),*.xls;*.xlsm")

   '下面这句就会报错,一个标点符号的出入导致了出错
   'fn = .GetOpenFilename("Excel文件(*.xls,*.xlsm),*.xls;*.xlsm")
  
   '下面这句运行后,只能筛选xlsm格式的
   fn = .GetOpenFilename("Excel文件(*.xlsm),*.xls;*.xlsm")

   '下面这句运行后,只能筛选xls格式的
   fn = .GetOpenFilename("Excel文件(*.xls),*.xls;*.xlsm")

   '所以在文件描述符中,要注意使用()的情况,
   ‘要么不用,要么就用完整的文件通配符描述

   'FilterIndex参数
   MsgBox .GetOpenFilename(filefilter:="低版本格式,*.xls, 高版本格式,*.xlsx," & _
                                        "启用宏的工作簿,*.xlsm,加载宏工作簿,*.xla;*.xlam", _
                                FilterIndex:=3, Title:="测试GetOpenFilename")
                        
   'MultiSelect参数
      fn = .GetOpenFilename(filefilter:="低版本格式,*.xls, 高版本格式,*.xlsx," & _
                                       "启用宏的工作簿,*.xlsm,加载宏工作簿,*.xla;*.xlam", _
                            FilterIndex:=3, Title:="测试MultiSelect参数", MultiSelect:=True)
   If IsArray(fn) Then
    '当返回结果是数组时,直接用=false,<>false判断产生类型不匹配的错误
    'IsArray检测是否为数组
    MsgBox Join(fn, ",")
          'join把一维数组转化成字符串,参数中的","用来充当各个元素之间的分隔符。
   End If
  End With

GetSaveAsFilename 方法
 显示标准的“另存为”对话框,获取想要保存的文件名,而无须真正保存任何文件。
 语法:
  GetSaveAsFilename(InitialFilename, FileFilter, FilterIndex, Title, ButtonText)
  InitialFilename 可选 Variant 指定建议的文件名。
    如果省略该参数,Microsoft Excel 使用活动工作簿的名称。
    可指定一个具体的路径,或单一的文件名,或路径+文件名
  FileFilter 可选,一个指定文件筛选条件的字符串。
  FilterIndex 可选,指定默认文件筛选条件的索引号。
  Title 可选,指定对话框的标题。如果省略该参数,则使用默认标题。
  ButtonText 可选,仅限 Macintosh。
 返回值:Variant
 说明:
  FileFilter,FilterIndex,Title,ButtonText可参考GetOpenFileName方法。
  InitialFilename可以是具体的路径,单一文件名,或者具体的路径+文件名。
  本方法返回选定的文件名或用户输入的名称。
  返回的名称可能包含路径说明。如果用户取消了对话框,则该值为 False。
  本方法可能更改当前驱动器或文件夹。
 示例:
  MsgBox Application.GetSaveAsFilename("d:\", "启用宏的工作簿,*.xlsm")
  MsgBox Application.GetSaveAsFilename("d:\test.xlsm", "启用宏的工作簿,*.xlsm")
  MsgBox Application.GetSaveAsFilename("test.xlsm", "启用宏的工作簿,*.xlsm")
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-1-26 19:13 | 显示全部楼层
回复

使用道具 举报

发表于 2014-1-27 08:33 | 显示全部楼层
回复

使用道具 举报

发表于 2014-6-18 12:42 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-2 09:36 , Processed in 0.275421 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表