网站首页 > 技术文章 正文
跨多文件批量操作
在 VBA 编程中,倘若涉及跨多个文件的批量操作,那 Dir 函数往往是不可或缺的得力 “工具”。无论是合并工作簿、工作簿批量转PDF,还是批量导入图片等操作,Dir 函数都无处不在。
例如,当我们要批量获取某个文件夹下所有xlsm格式的文件名时,可以使用以下VBA代码:
Sub 批量获取xlsm格式的文件名()
Dim fn As String
Dim folder As String
folder = "C:\VBAMatrix\"
fn = Dir(folder & "*.xlsm")
Do While fn <> ""
Debug.Print fn
fn = Dir
Loop
End Sub
如果要批量获取其他格式的文件名时,只要将第五行的代码稍加修改即可。例如,要批量获取jpg格式的文件名,第五行改为:
fn = Dir(folder & "*.jpg")
Dir函数的小Bug
然而,当我们使用Dir函数匹配*.xls格式的文件时,会同时匹配到文件后缀相似的文件(.xlsm和.xlsx等格式),导致出现不符合预期的结果。为此,我们可以修正一下代码,以批量获取所有xls格式的文件名。
Sub 批量获取xls格式的文件名()
Dim fn As String
Dim folder As String
folder = "C:\VBAMatrix\"
fn = Dir(folder & "*.xls")
Dim fileExtension As String
Do While fn <> ""
'获取文件的后缀名,用于精确判断格式
fileExtension = Right(fn, Len(fn) - InStrRev(fn, "."))
If fileExtension = "xls" Then
Debug.Print fn
End If
fn = Dir
Loop
End Sub
Dir函数的缺憾
还有一个缺憾是,Dir函数并不能直接获取子文件夹下的文件名。幸运的是,“Excel矩阵”插件已经内置了“全级次遍历文件名”功能。
使用方法也非常简单:依次点击Excel矩阵-->文件管理-->遍历文件,然后我们选择一个文件夹,就将该文件夹下(含子文件夹)所有文件名称及完整路径写入一个新工作表了。
猜你喜欢
- 2025-06-05 Python内置函数dir()和help()
- 2025-06-05 路径扫描 -- dirsearch
- 2025-06-05 生活实用技巧之「给Windows资源管理器插上翅膀2.0」
- 2025-06-05 DIR-859发烧无极限 将折腾进行到底
- 2025-06-05 速无可挡、霸气外露--千兆路由DIR-890L测评
- 2025-06-05 linux中创建和删除mkdir、rmdir、touch、rm命令
- 2025-06-05 8个良心的国产小众软件,知乎10w人精选,究竟好在哪里
- 2025-06-05 白帽黑客如何通过dirsearch脚本工具扫描和收集网站敏感文件
- 2025-06-05 【命令操作】linux上basename和dirname使用详解 | 统信 | 麒麟 | 方德
- 2025-06-05 就在今天!微信又“整活儿”了
- 最近发表
- 标签列表
-
- axure 注册码 (25)
- exploit db (21)
- mutex_lock (30)
- oracleclient (27)
- think in java (14)
- javascript权威指南 (19)
- nfs (25)
- componentart (17)
- yii框架 (14)
- springbatch (28)
- oracle数据库备份 (25)
- iptables (21)
- 自动化单元测试 (18)
- python编写软件 (14)
- dir (26)
- connectionstring属性尚未初始化 (23)
- output (32)
- panel滚动条 (28)
- centos 5 4 (23)
- sql学习 (33)
- dfn (14)
- http error 503 (21)
- pop3服务器 (18)
- 图表组件 (17)
- android退出应用 (21)