Ersetzen Sie Text in einer Textdatei mit VBA in Microsoft Excel

Anonim

Die folgenden Makros können verwendet werden, um Text in einer Textdatei zu ersetzen,
z.B. wenn Sie ein Spaltentrennzeichen in einer Textdatei ändern möchten
bevor Sie es in ein Excel-Arbeitsblatt importieren oder nachdem Sie ein Arbeitsblatt in eine Textdatei exportieren.

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) = "" Then Exit Sub If Dir(TargetFile) "" Then On Error Resume Next Kill TargetFile On Error GoTo 0 If Dir(TargetFile) "" Then MsgBox TargetFile & _ " bereits öffnen, schließen und löschen / benennen Sie die Datei um und versuchen Sie es erneut.", _ 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 ' Zeilenzähler Application.StatusBar = "Lesen von Daten aus " & _ TargetFile & "… " While Not EOF(F1) If i Mod 100 = 0 Then Application.StatusBar = _ "Reading line #" & i & " in " & _ TargetFile & "… " Line Input #F1, tLine If sText "" Then ReplaceTextInString tLine, sText, rText End If Print #F2, tLine i = i + 1 Wend Application.StatusBar = "Dateien werden geschlossen… " Close F1 Close F2 Kill SourceFile ' delete or iginal file Name TargetFile As SourceFile ' Temporäre Datei umbenennen 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)) If p > 0 Then ' SearchString durch ReplaceString ersetzen NewString = "" If p > 1 Then 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 Bis p = 0 End Sub Sub TestReplaceTextInFile() ReplaceTextInFile ThisWorkbook.Path & _ "\ReplaceInTextFile.txt", "|", ";" ' ersetzt alle Pipe-Zeichen (|) durch Semikolons (;) End Sub