2013-02-12 122 views
2

我需要帮助创建查找和替换字符串宏,以便它可以在文件夹中的所有文件中查找和替换字符串。查找并替换文件夹中所有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 
+2

请出示你的尝试和你在哪里卡住 – scott 2013-02-12 19:54:40

+1

非常一样的烦恼让我学会VBA 4个月前完成零级))) – 2013-02-12 20:57:55

+1

你可以帮助通过提供更多的细节来获得答案 - 你有什么问题?你知道任何VBA吗?你需要知道如何循环通过文件夹中的文件?打开工作簿? – 2013-02-12 21:54:50

回答

3

当您在实际上有打开文本文件的代码 - 不是Excel文件 - 我采用了相同的方法

类似这样的地方

  1. Dir用于遍历特定文件夹中的所有文件。
  2. 使用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 
+0

亲爱的代码感谢。至于,我是VBA的新手,请你帮我粘贴这段代码并运行。我通过粘贴在VBAProject-> ThisWorkBook中试了一下。它在运行时不会显示任何错误,但同时它不会被替换,即不能正常工作。你能帮忙吗? – 2015-09-23 07:21:23

+1

@guaravkumar将它放在一个普通的代码模块中。确保您的路径名称已更新(从C; \ macro \ above)。 – brettdj 2015-09-23 09:26:07

+0

非常感谢您的帮助。我正在为excel文件做这件事。我认为这是错误的原因:输入文件末尾(错误62)。你可以帮我写一下在程序中使用的opentextfile和createtextfile的替代品。非常感谢预期:) – 2015-09-23 11:17:00

相关问题