文件过滤_Excel VBA | 按类型过滤文件的文件选取器

本文介绍了如何使用Excel VBA的Application.GetOpenFilename方法创建一个文件选取器,该选取器能够按特定文件类型(如.jpf和.bmp)进行过滤,帮助用户高效地选择所需文件。目标是提升大学生和职场人士的Office技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务。支持我,也为自己加油!

前两节课介绍了如何利用VBA弹出文件或者是文件夹 选取器 供用户选择,用的是 Application 的 FileDialog 对象实现的,有时在选取文件时,我们希望可供选择的文件都是属于一种类型的或者是某几种类型的,而不是把所有的文件都显示在选取器中,这时该怎么办呢?

这时就需要利用Application的GetOpenFilename方法来实现。

语法: GetOpenFilename (FileFilterFilterIndexTitleButtonTextMultiSelect) 功能: 显示标准的 “打开” 对话框,并获取用户文件名,而不必真正打开任何文件。 各个参数的含义: 5ae788759f0dc4a637dbab72cbf0ab95.png 备注: FileFilter  参数由文件筛选字符串对 后跟的 MS-DOS 通配符文件筛选规范 组成, 其中每个部分和每个字符串对都以逗号分隔。  各对字符串在“文件类型”下拉列表框中列出。 例如,以下字符串指定了两个文件筛选器 — 文本和加载项: "Text Files (*.txt),*.txt,Add-In Files (*.xla),*.xla" 若要对一种文件筛选器类型使用多个 MS-DOS 通配符表达式,请使用分号来分隔通配符表达式;例如 "Visual Basic Files (*.bas; *.txt),*.bas;*.txt"如果 FileFilter 被省略,则此参数默认为 "All Files (*.*),*.*" 此方法返回选定文件名或用户输入的文件名。  返回的文件名可能包含路径规范。 如果 MultiSelect 为 True,返回值为一组选定文件名(即使用户只选择一个文件名,也不例外)。 如果用户取消了对话框,则该值为 False。 此方法可能会更改当前驱动器或文件夹。 案例: 3411dc713bc5b93d1dac0839c8f6ea63.gif 桌面上有文件夹A,里面有jpg图片,有Excel文件,有txt文件,有Word文档,希望在选取时能按照类型过滤文件,实现如下效果: 648dc54e62fb441cf44a9beb400a064b.gif 代码如下:
Sub 按类型筛选文件()On Error Resume NextDim filename, i%filename = Application.GetOpenFilename("txt文件,*.txt,Excel文件,*.xlsx,jpg文件,*.jpg,所有文件,*.*", , "请选择文件", , True)If Err.Number > 0 Then Exit SubFor i = 1 To UBound(filename)Cells(i, 1) = filename(i)NextEnd Sub
向左滑动可以查看完整代码 代码中for……next部分 ,是为了把获取的文件名罗列到Excel表中。 打 开选取器并按类型选择文件的关键代码就一句: filename = Application.GetOpenFilename("txt文件,*.txt,Excel文件,*.xlsx,jpg文件,*.jpg,所有文件,*.*", _ , "请选择文件", , True) 难点在第一个参数的写法, 语法格式:提示语,扩展名   如果文件的类型比较多,那就: 提示语,扩展名,提示语,扩展名 ,提示语,扩展名 …… 中间用逗号隔开,这样一直往下写就可以。 如果是一种类型的文件,扩展名可能有好几个,比如图片文件,有jpg格式的, 有bmp格式的,写法如下:

提示语,*.jpf;*.bmp,扩展名之间用分号隔开。

本节的分享就到这里,鹏哥祝大家每天都有进步。

聚米为谷

博学宏才

更多学习内容

手机端请扫描

0bfdf32b7c0bcc8eb66f341963c672de.png

电脑端请登录

www.mihong.top

8d8e3cddce56a532c8e740eb6ebbda43.gif 您点的每个赞,我都认真当成了喜欢
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值