请求编写基于FSO对象的Excel宏:通配符打开指定文件夹TXT文件
解决方案:用FSO遍历并打开指定文件夹下的所有TXT文件
没问题,我帮你调整代码,完全避开Shell命令,改用FileSystemObject(FSO)来批量处理指定文件夹下的所有.txt文件。这里用Application.FollowHyperlink来打开文件,它会调用系统默认程序(也就是记事本),完美符合你工作环境的限制。
完整宏代码
Sub M08_OpenAllTXTFiles() Dim fso As Object Dim targetFolder As Object Dim txtFiles As Object Dim singleFile As Object Dim folderPath As String ' 指定你的目标文件夹路径(记得改成你实际需要的路径) folderPath = "C:\L2Q\L2Q-W\SOURCE\TXT\" ' 创建FSO对象(后期绑定,无需手动添加引用) Set fso = CreateObject("Scripting.FileSystemObject") ' 先检查文件夹是否存在,避免报错 If Not fso.FolderExists(folderPath) Then MsgBox "目标文件夹不存在,请检查路径是否正确!", vbExclamation Exit Sub End If ' 获取目标文件夹对象 Set targetFolder = fso.GetFolder(folderPath) ' 获取文件夹下所有文件集合 Set txtFiles = targetFolder.Files ' 遍历所有文件,只打开TXT后缀的 For Each singleFile In txtFiles ' 严格匹配TXT扩展名,防止误打开类似.txt.bak的文件 If UCase(fso.GetExtensionName(singleFile.Path)) = "TXT" Then ' 用Excel内置方法打开,完全避开Shell命令 Application.FollowHyperlink singleFile.Path, NewWindow:=True End If Next singleFile ' 释放占用的对象资源 Set singleFile = Nothing Set txtFiles = Nothing Set targetFolder = Nothing Set fso = Nothing MsgBox "所有TXT文件已打开!", vbInformation End Sub
关键细节说明
- FSO的作用:通过FileSystemObject可以轻松遍历文件夹、筛选文件,完全替代你原来指定单个文件名的逻辑,实现通配符匹配的需求。
- 避开Shell的核心:用
Application.FollowHyperlink是Excel原生方法,不需要调用外部系统命令,完美适配你工作场所的限制。 - 严谨性处理:增加了文件夹存在性检查,还严格筛选
.txt扩展名,避免误操作。
使用小贴士
- 记得把
folderPath改成你实际需要的文件夹路径,路径末尾要保留\哦。 - 如果文件夹里TXT文件很多,打开的记事本窗口会比较多,提前做好准备~
内容的提问来源于stack exchange,提问作者Siraj
相关产品推荐
相关产品推荐

