系列文章
Excel文件批量处理指南 | 用VBA一键操作文件夹所有工作簿
🌐 Excel跨文件夹批处理黑科技 | 用VBA递归遍历所有子目录
一、递归处理的必要性
传统批量处理的局限:
- 只能处理当前文件夹文件
- 遇到嵌套文件夹需要多次运行
- 无法应对企业级复杂目录结构
递归处理优势:
- 全自动扫描:自动穿透所有子文件夹
- 智能过滤:精准识别Excel各类格式
- 统一操作:对任意深度文件执行相同处理
二、核心技术对比升级
文件遍历方式对比
功能 | 上篇(Dir函数) | 本篇(FSO递归) |
---|---|---|
遍历速度 | 较快(单线程) | 极快(对象缓存) |
支持目录深度 | 单层 | 无限嵌套 |
文件类型判断 | 通配符匹配 | 精确扩展名验证 |
特殊文件处理 | 可能遗漏 | 完整遍历 |
递归算法核心逻辑
Private Sub GetExcelFiles(fso, strPath, colFiles)
' 处理当前层
For Each objFile In objFolder.Files
If IsExcelFile() Then colFiles.Add
Next
' 递归子层
For Each objSubFolder In objFolder.SubFolders
GetExcelFiles fso, objSubFolder.Path, colFiles
Next
End Sub
- 深度优先搜索:先处理子文件夹再返回上层
- 堆栈结构:自动维护递归调用堆栈
- 对象缓存:FSO对象提升遍历效率
三、企业级功能增强
1. 支持全系Excel格式
Array(".xls", ".xlsx", ".xlsm", ".xlsb", ".xla")
- 历史版本兼容:支持97-2003格式(.xls)
- 新特性支持:包含宏文件(.xlsm)和加载项(.xla)