Zamijenite tekst u tekstualnoj datoteci pomoću VBA u programu Microsoft Excel

Anonim

Dolje navedene makronaredbe mogu se koristiti za zamjenu teksta u tekstualnoj datoteci,
npr. kada želite promijeniti razdjelnik stupaca u tekstualnoj datoteci
prije nego što ga uvezete u radni list programa Excel ili nakon što izvezete radni list u tekstualnu datoteku.

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)" "Tada se MsgBox TargetFile & _" već otvorio, zatvorio i obrisao / preimenujte datoteku i pokušajte ponovo. ", _ vbCritical Exit Sub End If End If F1 = FreeFile Open SourceFile Za unos kao F1 F2 = FreeFile Open TargetFile Za izlaz kao F2 i = 1 'brojač redaka Application.StatusBar =" Čitanje podataka iz " & _ TargetFile & "…" Dok nije EOF (F1) Ako sam Mod 100 = 0 Tada Application.StatusBar = _ "Red za čitanje #" & i & "u" & _ TargetFile & "…" Unos reda #F1, tLine Ako sText "" Zatim ReplaceTextInString tLine, sText, rText Kraj Ako je Ispis #F2, tLine i = i + 1 Wend Application.StatusBar = "Zatvaranje datoteka …" Zatvori F1 Zatvori F2 Ubij izvornu datoteku 'obriši ili izvorna datoteka Ime TargetFile As SourceFile 'preimenujte privremenu datoteku 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)) Ako je p> 0, tada 'zamijenite SearchString sa ReplaceString NewString = "" Ako je p> 1 Tada je NewString = Mid (SourceString, 1, p - 1) NewString = NewString + ReplaceString NewString = NewString + Sredina (Izvorni niz, _ p + Len (Pretraživački niz), Len (Izvorni niz)) p = p + Len (ReplaceString) - 1 SourceString = NewString Kraj Ako je Ako p> = Len (NewString) Tada je p = 0 Petlja do p = 0 Završi pod -test SubReplaceTextInFile () ReplaceTextInFile ThisWorkbook.Path & _ "\ ReplaceInTextFile.txt", "|", ";" 'zamjenjuje sve znakove cijevi (|) točkom-zarezom (;) End Sub