前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Application主程序对象方法(三)

Application主程序对象方法(三)

作者头像
无言之月
发布2019-10-13 15:39:18
1.6K0
发布2019-10-13 15:39:18
举报
文章被收录于专栏:Excel和Access学习笔记

大家好,上节介绍了Application主程序对象的onkey方法和inputbox方法,本节将介绍GetOpenFilename方法。

基 础 知 识

Application对象的GetOpenFilename方法,可以打开一个标准的“打开”对话框,当用户在对话框中单击”打开“按钮时,将返回选择的路径和文件名(实际不会真正打开文件)。如果用户单击“取消”关闭对话框,返回False。

GetOpenFilename方法的语法:

Application.GetOpenFilename(FileFilter,FilterIndex,Title,ButtonText,MultiSelect)

所有参数均为可选,接受GetOpenFilename方法返回值的变量必须定义为Variant类型。

1、参数FileFilter,指定文件筛选条件的字符串。

表示在“打开”对话框中“文件类型”下拉列表中的内容,由文件筛选字符串和通配符表示的文件筛选规则说明组成,中间用逗号隔开。

比如指定筛选文本文件,表示为“文本文件(*.txt),*.txt) 。

比如筛选txt文本文件和压缩RAR文件,表示为“文本文件(”*.txt),*.txt;压缩rar文件(*.rar),*.rar" 。注意两种不同文件类型间用分号间隔。

比如筛选所有Excel类型文件,具体格式表示如下“Excel文件(*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm,” 。注意不同的文件类型用分号间隔。

如果省略该参数,则默认为“所有文件(*.*),*.*”。

2、参数FilterIndex,指定默认文件筛选条件的索引值,即在“文件类型”框中显示的文件类型,索引值从1至在参数FileFilter中指定的筛选条件数。默认情况下,使用第一个文件筛选条件。

3、参数Title,指定对话框的标题。默认情况下,标题为“打开”。

4、参数ButtonText,不用。

5、参数MultiSelect,默认情况下为False,只允许选择一个文件名。设置为True允许选择多个文件名称,返回值是一个包含所有选定文件名的数组(即使仅选定一个文件名。)

示 例 一

下面以筛选文本文件为例,选择单个文件,返回文件的地址,在立即窗口中显示。

Sub test()

Dim strname As Variant

strname = Application.GetOpenFilename("文本文件(*.txt),*.txt")

Debug.Print strname

End Sub

代码中首先定义了strname变量为variant变体型变量,用它来接受GetOpenFilename的返回值。

按条件筛选出txt类型文件,但选中”文本文件“打开时,可以返回结果为文件的路径和名称。如果选择取消,则返回false。

(也可以将GetOpenFilename的参数,用变量分离出来,方便修改。)


示 例 二

下面示例将选择多个文件,获得多个文件的地址,在立即窗口中显示。(示例中涉及部分数组的知识,会做简单的介绍,后期介绍数组时会详细介绍)

运行代码,弹出打开窗口,按住ctrl键,选中打开两个excel文件。立即窗口中显示两个excel文件的地址。两个文件的扩展名类型不同。具体代码如下。

Sub test()

Dim strname As Variant

Dim strfilt As String

Dim i As Integer

strfilt = "excel文件(*.xls;*.xlsm;*.xlsx),*.xls;*.xlsm;*.xlsx"

strname = Application.GetOpenFilename(strfilt, , , , True)

If Not IsArray(strname) Then

Debug.Print strname

Else

For i = LBound(strname) To UBound(strname)

.Print strname(i) & vbCrLf

Next

End If

End Sub

下面分段具体分析下代码,定义了strname为varian变体型变量用于接受GetOpenFilename方法的返回值。它的两个参数,第一是指定筛选文件的字符串,定义了strfilt为字符串变量将它分离出来,字符串中为表示筛选excel文件的三种格式。(这样做主要是便于修改。),最后一个参数为true,则可以选择多个文件。这些部分和示例一是类似的。

由于方法的最后参数选择true,在弹窗中无论选择一个还是多个,返回值strname是一个数组,而如果点击取消,则返回false字符串。(由于返回值类型的不同,所以strname才定义为variant变体型变量)

If Not IsArray(strname) Then

Debug.Print strname

Else

For i = LBound(strname) To UBound(strname)

.Print strname(i) & vbCrLf

Next

End If

End Sub

第二段If Not IsArray(strname) Then这段条件判断,即判断strname如果不是数组,就Debug.Print strname。

如果strname经过判断是数组,这里lbound和ubound是函数用于获得数组的下界和上界(可以理解为最小值和最大值)在示例中选择了两个文件,即变量i从1到2。

为了显示strname数组中的每个值,这里就通过for循环变量,循环显示出strname(i)数组中的每一个元素。后面的 vbcrlf表示回车符加换行符。


本节主要介绍了application主程序对象的GetOpenFilename方法,注意几个参数的使用。接受GetOpenFilename方法返回值的变量需要定义为variant变体型变量。以及示例二中的,选择多个文件时的判断方式。祝大家学习快乐。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel和Access学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档