Sostituisci il testo in un file di testo utilizzando VBA in Microsoft Excel

Sommario

Le macro seguenti possono essere utilizzate per sostituire il testo in un file di testo,
per esempio. quando vuoi cambiare un separatore di colonna in un file di testo
prima di importarlo in un foglio di lavoro Excel o dopo aver esportato un foglio di lavoro in un file di testo.

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 & _ " già aperto, chiuso ed eliminato / rinominare il file e riprovare.", _ 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 ' line counter Application.StatusBar = "Lettura dati da " & _ TargetFile & "… " Mentre non EOF(F1) If i Mod 100 = 0 Then Application.StatusBar = _ "Lettura riga #" & 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 = "Chiusura dei file… " Chiudi F1 Chiudi F2 Kill SourceFile ' elimina o iginal file Name TargetFile As SourceFile ' rinomina il file temporaneo 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 'sostituisci SearchString con ReplaceString 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 Ciclo fino a p = 0 End Sub Sub TestReplaceTextInFile() ReplaceTextInFile ThisWorkbook.Path & _ "\ReplaceInTextFile.txt", "|", ";" ' sostituisce tutti i caratteri pipe (|) con punto e virgola (;) End Sub

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave