2013-02-12 110 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

相關問題