¿Cuántas veces has querido importar un TXT pero por una u otra razón tiene algún valor “raro” o delimitador no funcional? ¿ninguna? bueno a mí me paso, y es por lo que en esta ocasión les comparto una sencilla pero útil macro que nos ayudara a modificar un TXT antes de hacer la importación a Excel.
Cabe destacar que no puedo atribuirme todo el logro, hay muchas partes modificadas por mí, por lo que internet es amplio y lleno de misterios así que toma lo que necesites =)
Sub modificar_txt()
Dim TextFile As Integer ‘< – – Archivo txt vació
Dim Filename, NewFile, FileContent As String ‘< – – Variables para crear el nuevo txt
Dim GetFile As Variant ‘< – – Información del explorador de Windows
‘delimitando parámetros de sistema (opcional)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
‘Abre el explorador de Windows para buscar el txt
GetFile = Application.GetOpenFilename(FileFilter:=»Text Files(*.txt),*txt», Title:=»Seleccionar TXT a modificar», MultiSelect:=False)
‘Si el usuario no selecciona ningún archivo y oprime cancelar termina la macro
If TypeName(GetFile) = «Boolean» Then
MsgBox «No se seleccionó ningún archivo», vbOKOnly
Exit Sub
‘Si selecciona un txt, lo deposita en una variable
Else
Filename = GetFile
End If
‘————— MODIFICANDO LA INFORMACION DEL TXT ————————–
‘Crea un archive vacío
TextFile = FreeFile
‘Abre el txt original en modo de solo lectura
Open Filename For Input As TextFile
‘Guarda la información del TXT en una variable
FileContent = Input(LOF(TextFile), TextFile)
‘Cierra el txt original
Close TextFile
‘Buscar y reemplazar las partes a modificar
‘ Este paso se puede repetir tanto como sea necesario
FileContent = Replace(FileContent, «<«, «|») ‘< – – Modificar esto por lo que se quiera reemplazar
‘Crear un nuevo TXT donde se guardará la información modificada
TextFile = FreeFile
‘Pregunta por el nombre del nuevo archivo con terminación .txt
NewFile = InputBox(«¿Cuál será el nombre del nuevo archivo?», , «example.txt»)
‘Abre el txt en modo de escritura
Open «C:\Users…\» & NewFile For Output As TextFile ‘< – – Modificar aquí la ruta de guardado
‘Escribe aquí los nuevos datos del txt nuevo
Print #TextFile, FileContent
‘Cierra el nuevo txt
Close TextFile
‘delimitando parámetros de sistema (opcional)
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub