如何修改VBA宏以批量处理文件夹中的所有TXT文件
批量处理文件夹内所有TXT文件的VBA宏修改方案
把原来的单文件处理宏改成批量版本,核心是用Dir函数遍历目标文件夹里的所有TXT文件,把原有的文件处理逻辑放到循环里即可。以下是修改后的完整代码:
Sub BatchReplaceCommaWithDot() Dim sBuf As String Dim sTemp As String Dim iFileNum As Integer Dim sFileName As String Dim sFolderPath As String ' 设置目标文件夹路径,末尾要加反斜杠 sFolderPath = "M:\" ' 获取文件夹中第一个TXT文件 sFileName = Dir(sFolderPath & "*.txt") ' 遍历所有TXT文件 Do While sFileName <> "" ' 重置临时变量,避免残留上一个文件的内容 sTemp = "" ' 读取文件内容 iFileNum = FreeFile Open sFolderPath & sFileName For Input As iFileNum Do Until EOF(iFileNum) Line Input #iFileNum, sBuf sTemp = sTemp & sBuf & vbCrLf Loop Close iFileNum ' 替换逗号为句号 sTemp = Replace(sTemp, ",", ".") ' 写入修改后的内容(直接覆盖原文件,建议先备份) iFileNum = FreeFile Open sFolderPath & sFileName For Output As iFileNum Print #iFileNum, sTemp Close iFileNum ' 获取下一个TXT文件 sFileName = Dir() Loop End Sub
关键修改说明:
- 新增
sFolderPath变量用来指定目标文件夹,记得路径末尾要加\ - 用
Dir(sFolderPath & "*.txt")获取第一个TXT文件,后续用Dir()自动遍历下一个文件 - 在每次处理新文件前重置
sTemp变量,防止不同文件的内容混在一起 - 把原有的单文件读写逻辑包裹在
Do While循环里,实现批量处理
注意事项:
- 这个宏会直接覆盖原文件,建议处理前先备份所有TXT文件
- 如果需要处理子文件夹里的TXT文件,可以在代码里添加递归逻辑,不过当前版本只处理指定文件夹下的一级文件
内容的提问来源于stack exchange,提问作者Dionysis Mitropoulos
相关产品推荐
相关产品推荐

