查找并替换文件夹中所有excel文件中的字符串
我需要帮助创建查找和替换字符串宏,以便它可以在文件夹中的所有文件中查找和替换字符串。查找并替换文件夹中所有excel文件中的字符串
例如fofler = "C:\ifolder\"
文件列表= "*.xlsx"
到目前为止,我只能做到这一点对一个文件,我需要做的是所有文件的文件夹
Sub ReplaceStringInFile()
Dim sBuf As String
Dim sTemp As String
Dim iFileNum As Integer
Dim sFileName As String
' Edit as needed
sFileName = "C:\macro\test.txt"
iFileNum = FreeFile
Open sFileName For Input As iFileNum
Do Until EOF(iFileNum)
Line Input #iFileNum, sBuf
sTemp = sTemp & sBuf & vbCrLf
Loop
Close iFileNum
sTemp = Replace(sTemp, "THIS", "THAT")
iFileNum = FreeFile
Open sFileName For Output As iFileNum
Print #iFileNum, sTemp
Close iFileNum
End Sub
当您在实际上有打开文本文件的代码 - 不是Excel文件 - 我采用了相同的方法
类似这样的地方
-
Dir
用于遍历特定文件夹中的所有txt文件。 - 使用FileScriptingObject一次读入所有文本,进行替换,然后用更新的文本覆盖文件文件。
代码
Sub ReplaceStringInFile()
Dim objFSO As Object
Dim objFil As Object
Dim objFil2 As Object
Dim StrFileName As String
Dim StrFolder As String
Dim SstrAll As String
Set objFSO = CreateObject("scripting.filesystemobject")
StrFolder = "c:\macro\"
StrFileName = Dir(StrFolder & "*.txt")
Do While StrFileName <> vbNullString
Set objFil = objFSO.opentextfile(StrFolder & StrFileName)
strAll = objFil.readall
objFil.Close
Set objFil2 = objFSO.createtextfile(StrFolder & StrFileName)
objFil2.Write Replace(strAll, "THIS", "THAT")
objFil2.Close
StrFileName = Dir
Loop
End Sub
亲爱的代码感谢。至于,我是VBA的新手,请你帮我粘贴这段代码并运行。我通过粘贴在VBAProject-> ThisWorkBook中试了一下。它在运行时不会显示任何错误,但同时它不会被替换,即不能正常工作。你能帮忙吗? – 2015-09-23 07:21:23
@guaravkumar将它放在一个普通的代码模块中。确保您的路径名称已更新(从C; \ macro \ above)。 – brettdj 2015-09-23 09:26:07
非常感谢您的帮助。我正在为excel文件做这件事。我认为这是错误的原因:输入文件末尾(错误62)。你可以帮我写一下在程序中使用的opentextfile和createtextfile的替代品。非常感谢预期:) – 2015-09-23 11:17:00
请出示你的尝试和你在哪里卡住 – scott 2013-02-12 19:54:40
非常一样的烦恼让我学会VBA 4个月前完成零级))) – 2013-02-12 20:57:55
你可以帮助通过提供更多的细节来获得答案 - 你有什么问题?你知道任何VBA吗?你需要知道如何循环通过文件夹中的文件?打开工作簿? – 2013-02-12 21:54:50