Înlocuiți textul într-un fișier text utilizând VBA în Microsoft Excel

Anonim

Macro-urile de mai jos pot fi utilizate pentru a înlocui textul într-un fișier text,
de exemplu. când doriți să schimbați un separator de coloane într-un fișier text
înainte de a o importa într-o foaie de lucru Excel sau după ce ați exportat o foaie de lucru într-un fișier text.

Sub ReplaceTextInFile (SourceFile As String, _ sText As String, rText As String) Dim TargetFile As String, tLine As String, tString As String Dim p As Integer, i As Long, F1 As Integer, F2 As Integer TargetFile = "RESULT.TMP "If Dir (SourceFile) =" "Apoi Ieșiți din Sub If Dir (TargetFile)" "Atunci la eroare Reîncepeți Urmăriți TargetFile la eroare GoTo 0 Dacă Dir (TargetFile)" "Atunci MsgBox TargetFile & _" deja deschis, închideți și ștergeți / redenumiți fișierul și încercați din nou. ", _ vbCritical Exit Sub End If End If F1 = FreeFile Open SourceFile For Input As F1 F2 = FreeFile Open TargetFile For Output As F2 i = 1 'counter counter Application.StatusBar =" Reading data from " & _ TargetFile & "…" În timp ce nu este EOF (F1) Dacă i Mod 100 = 0 Apoi Application.StatusBar = _ "Linia de citire #" & i & "în" & _ TargetFile & "…" Intrare linie # F1, tLine Dacă sText "" Apoi ReplaceTextInString tLine, sText, rText End Dacă se imprimă # F2, tLine i = i + 1 Wend Application.StatusBar = "Închiderea fișierelor …" Închide F1 Închide F2 Kill SourceFile 'șterge sau fișier iginal Nume TargetFile Ca SourceFile 'redenumește fișierul temporar Application.StatusBar = False End Sub Private Sub ReplaceTextInString (SourceString As String, _ SearchString As String, ReplaceString As String) Dim p As Integer, NewString As String Do p = InStr (p + 1 , UCase (SourceString), UCase (SearchString)) Dacă p> 0 Apoi 'înlocuiți SearchString cu ReplaceString NewString = "" Dacă p> 1 Apoi NewString = Mid (SourceString, 1, p - 1) NewString = NewString + ReplaceString NewString = NewString + Mid (SourceString, _ p + Len (SearchString), Len (SourceString)) p = p + Len (ReplaceString) - 1 SourceString = NewString End If If p> = Len (NewString) Then p = 0 Loop Until p = 0 End Sub Sub TestReplaceTextInFile () ReplaceTextInFile ThisWorkbook.Path & _ "\ ReplaceInTextFile.txt", "|", ";" 'înlocuiește toate caracterele pipe (|) cu punct și virgulă (;) End Sub