Exportar Excel a TXT Delimitado por Pipe
Se muestra una macro de excel que permite exportar de Excel a TXT con campos delimitado por Pipe ( » | » – Barra Vertical) u otro carácter elegido, verás como se pueden pasar datos de una hoja de Excel a TXT usando códigos de VBA.
Necesitas mejorar tu manejo de Excel haz click acá, si quieres aprender sobre Excel en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet, te lo recomiendo no te arrepentirás.
Suscribe a nuestro canal de You Tube, mira el playlist con vídeos relacionados donde podrás ver la macro en acción con una explicación en forma visual que ayudará a entender el ejemplo en forma más fácil.
Pasar Texto de Excel a TXT con macro
Para observar como trabaja esta macro que exporta datos de Excel a un archivo TXT, se debe descargar desde el final del post, al abrir el libro se verá un botón que al presionarlo genera un archivo TXT, nombrando el fichero TXT con el mismo nombre del el archivo con la macro, pero con extensión TXT.
La macro que permite llevar datos de el libro de Excel al archivo TXT, recorre las filas de Excel exportando los datos desde la fila dos a la última fila con dato y desde la columna A a la G, separando cada dato con PIPE («|») en el archivo TXT.
Quizás también interese leer:
Como Exportar Desde Excel a TXT con Ancho Fijo Rellenando Campos con Ceros
Como Exportar Desde Excel y Guardar Archivo TXT con Ancho Fijo Rellenando Campos con Barra Inclinada
Como Exportar Desde Excel y Guardar Archivo TXT Separado por Coma
Explicación del Ejemplo que Permite Ocultar y Mostrar Controles de VBA
Este ejemplo que permite con macro de Excel Exportar a TXT datos o registros que se encuentran en la hoja de Excel, lo primero que hace es determinar el nombre del archivo con el que se va a guardar el TXT, guardando en la variable «myfile» el nombre del archivo que luego se usará en la macro.
En la variable «nom» se obtiene el nombre actual del archivo con la macro:
nom = ActiveWorkbook.Name
En la variable «pto» se detecta donde está el punto de la extensión del nombre del archivo, recuerden que el nombre del fichero con la macro tiene extensión .xlsm,
pto = InStr(nom, «.»)
En la variable «nomarch» se obtiene el nombre del archivo sin la extensión «.xlsm», que es el nombre del archivo que se usará, para nombrar el fichero TXT, pero por supuesto con la extensión TXT.
nomarch = Left(nom, pto – 1)
Por último en la variable «myfile» se obtiene el nombre del archivo TXT que se usará en la macro.
myfile = ThisWorkbook.Path & «\» & nomarch & «.txt»
En la variable «cara» se asigna el carácter con el que se separarán o delimitarán los datos en el archivo TXT, en este caso es PIPE.
cara = «|»
En la variable «uf» se determinar la ultima celda con datos para hacer un bucle entre la primer y la ultima fila con datos para copiando o exportando los registros de Excel a TXT, separando cada registro de la misma fila, pero de columna distinta con PIPE, el código es el siguiente:
uf = a.Range(«A» & Rows.Count).End(xlUp).Row
Por último se hace un bucle y exporta cada uno de los registros de Excel al archivo TXT, primero se carga en las variables «C1» a «C7» el valor de la celda perteneciente a la columna 1 a 7 y la fila que va recorriendo el bucle en cada momento, por último se concatena los datos de cada columna y el carácter que separa cada registro que en este caso es PIPE, guardando el archivo con el nombre determinado en primero momento.
Open myfile For Output As #1
For i = 2 To uf
C1 = Cells(i, 1)
C2 = Cells(i, 2)
C3 = Cells(i, 3)
C4 = Cells(i, 4)
C5 = Cells(i, 5)
C6 = Cells(i, 6)
C7 = Cells(i, 7)
Print #1, C1 & cara & C2 & cara & C3 & cara & C4 & cara & C5 & cara & C6 & cara & C7
Next i
Descarga del código del ejemplo Como Exportar a TXT Delimitado por PIPE
Desde el final del post se puede descargar el ejemplo en forma gratuita sin ninguna restricción, el código se puede adaptar a cada necesidad, aporta a sostener la esta web si está dentro de tus posibilidades, desde ya muchas gracias.
Código que va en el módulo de Excel – VBA
#If VBA7 And Win64 Then
‘Si es de 64 bits
Public Declare PtrSafe Function ShellExecute Lib «shell32.dll» Alias «ShellExecuteA» (ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr
Public Declare PtrSafe Function FindWindow Lib «USER32» Alias «FindWindowA» (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Public Declare PtrSafe Function GetWindowLongPtr Lib «USER32» Alias «GetWindowLongPtrA» (ByVal hwnd As LongPtr, ByVal nIndex As Long) As LongPtr
Public Declare PtrSafe Function SetWindowLongPtr Lib «USER32» Alias «SetWindowLongPtrA» (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr
Public Declare PtrSafe Function DrawMenuBar Lib «USER32» (ByVal hwnd As Long) As LongPtr
Public Declare PtrSafe Function RegOpenKeyA Lib «advapire32.dll» (ByVal hKey As LongPtr, ByVal lpSubKey As String, phkResult As LongPtr) As LongPtr
#Else
‘Si es de 32 bits
Public Declare Function ShellExecute Lib «shell32.dll» Alias «ShellExecuteA» (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Declare Function FindWindow Lib «USER32» Alias «FindWindowA» (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetWindowLong Lib «USER32» Alias «GetWindowLongA» (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib «USER32» Alias «SetWindowLongA» (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function DrawMenuBar Lib «USER32» (ByVal hwnd As Long) As Long
Public Declare Function RegOpenKeyA Lib «advapire32.dll» (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
#End If
Sub ExportaTXTDelimitadoPorPuntoyComa()
Dim i As Double
On Error Resume Next
Set a = Sheets(«Hoja1»)
nom = ActiveWorkbook.Name
pto = InStr(nom, «.»)
nomarch = Left(nom, pto – 1)
myfile = ThisWorkbook.Path & «\» & nomarch & «.txt»
cara = «|» ‘Pipe o Barra Vertical ‘aca se debe ingresar el caracter por el que se requiere delimitar los registros del TXT
uf = a.Range(«A» & Rows.Count).End(xlUp).Row
Open myfile For Output As #1
For i = 2 To uf
C1 = Cells(i, 1)
C2 = Cells(i, 2)
C3 = Cells(i, 3)
C4 = Cells(i, 4)
C5 = Cells(i, 5)
C6 = Cells(i, 6)
C7 = Cells(i, 7)
Print #1, C1 & cara & C2 & cara & C3 & cara & C4 & cara & C5 & cara & C6 & cara & C7
Next i
Close
MsgBox («El archivo txt se creo con éxito»), vbInformation, «AVISO»
End Sub
Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.
If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.
Donate:
Cuenta Paypal: https://paypal.me/programarexcel
Cuenta Bitcoin: 1KBGGb8fyDzyR3X1Rie6m7VguzaAfngNbd
Cuenta Ether: 0x41Bbd24556914C83a31217eBb3BC49789b66e407