Las macros siguientes se pueden utilizar para reemplazar texto en un archivo de texto,
p.ej. cuando desee cambiar un separador de columna en un archivo de texto
antes de importarlo a una hoja de cálculo de Excel o después de exportar una hoja de cálculo a un archivo de texto.
Sub ReplaceTextInFile (SourceFile como cadena, _ sText como cadena, rText como cadena) Dim TargetFile como cadena, tLine como cadena, tString como cadena Dim p como entero, i tan largo, F1 como entero, F2 como entero TargetFile = "RESULT.TMP "If Dir (SourceFile) =" "Entonces Salir de Sub If Dir (TargetFile)" "Luego en caso de error Continuar Siguiente Eliminar TargetFile en caso de error Ir a 0 Si Dir (TargetFile)" "Entonces MsgBox TargetFile & _" ya está abierto, cerrar y eliminar / cambie el nombre del archivo y vuelva a intentarlo. ", _ vbCritical Exit Sub End If End If F1 = FreeFile Abrir archivo de código fuente para la entrada como F1 F2 = FreeFile Abrir el archivo de destino para la salida como F2 i = 1 'contador de línea Application.StatusBar =" Leyendo datos de " & _ TargetFile & "…" mientras no es EOF (F1) If i Mod 100 = 0 Then Application.StatusBar = _ "Reading line #" & i & "in" & _ TargetFile & "…" Entrada de línea # F1, tLine If sText "" Luego ReplaceTextInString tLine, sText, rText End If Print # F2, tLine i = i + 1 Wend Application.StatusBar = "Cerrando archivos …" Cerrar F1 Cerrar F2 Kill SourceFile 'eliminar o Nombre del archivo original TargetFile As SourceFile 'renombrar el archivo temporal Application.StatusBar = False End Sub Private Sub ReplaceTextInString (SourceString como cadena, _ SearchString como cadena, ReplaceString como cadena) Dim p como entero, NewString como cadena Do p = InStr (p + 1 , UCase (SourceString), UCase (SearchString)) Si p> 0 Entonces 'reemplace SearchString con ReplaceString NewString = "" Si p> 1 Entonces 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) Entonces p = 0 Bucle hasta p = 0 End Sub Sub TestReplaceTextInFile () ReplaceTextInFile ThisWorkbook.Path & _ "\ ReplaceInTextFile.txt", "|", ";" 'reemplaza todos los caracteres de barra vertical (|) con punto y coma (;) End Sub