如何修改VBA遍历子文件夹代码以批量打开指定规则命名文件
批量打开符合命名规则的.dat文件
没问题,我帮你修改代码来实现批量打开所有符合effectXXXXXX.dat格式的文件(XXXXXX是6位数字)。核心思路是把原来的精确文件名匹配改成模式匹配,这样就能自动识别所有符合规则的文件了。
下面是修改后的完整代码:
Sub LoopSubfoldersAndFiles() Dim fso As Object Dim Folder As Object Dim subfolder As Object ' 变量名修正,避免和集合名重复 Dim wb As Workbook Dim CurrFile As Object Dim openedCount As Integer ' 记录打开的文件数量 With Application .ScreenUpdating = False .EnableEvents = False .Calculation = xlCalculationManual End With Set fso = CreateObject("Scripting.FileSystemObject") Set Folder = fso.GetFolder("\\My Documents\Output files\analysis-tool-development") openedCount = 0 ' 遍历主文件夹下的所有子文件夹 For Each subfolder In Folder.SubFolders ' 遍历子文件夹下的所有文件 For Each CurrFile In subfolder.Files ' 判断文件名是否符合effectXXXXXX.dat规则(#代表任意数字,共6位) If CurrFile.Name Like "effect######.dat" Then ' 直接用CurrFile.Path获取完整路径,避免手动拼接出错 Set wb = Workbooks.Open(CurrFile.Path) openedCount = openedCount + 1 End If Next CurrFile Next subfolder ' 恢复Excel设置并提示结果 With Application .EnableEvents = True .Calculation = xlCalculationAutomatic .ScreenUpdating = True End With MsgBox "已成功打开 " & openedCount & " 个符合规则的文件!", vbInformation ' 释放对象 Set fso = Nothing Set Folder = Nothing Set subfolder = Nothing End Sub
关键修改说明:
- 变量名修正:把原来的
subfolders变量改成subfolder,避免和Folder.SubFolders集合名重复,提升代码可读性 - 模式匹配逻辑:用
Like "effect######.dat"替代精确匹配,其中#是VBA里的数字通配符,正好匹配6位数字的要求 - 简化路径获取:直接使用
CurrFile.Path获取文件的完整路径,不用手动拼接子文件夹路径和文件名,减少出错概率 - 添加计数提示:新增
openedCount变量统计打开的文件数量,最后用消息框反馈结果,更直观
如果你的数字位数不是固定6位(比如可能是1-6位),可以把匹配模式改成effect*.dat,但这样会匹配任何以effect开头、.dat结尾的文件,根据你的实际需求调整即可。
内容的提问来源于stack exchange,提问作者user9103716
相关产品推荐
相关产品推荐

