PROGRAMAR EN VBA MACROS PARA EXCEL: Como Exportar Desde Excel y Guardar Archivo TXT

Como Exportar Desde Excel y Guardar Archivo TXT






La macro que se presenta en este post permite exportar de Excel a un Achivo TXT, recorre todas las filas del rango de datos que especifiquemos y va exportando los datos a TXT, anteriormente se había presentado una macro que guarda en TXT con formato Unicode UTF8, donde se usan mediante código los comandos de guardar de Excel, lo cual es válido también.

Recomiendo un excelente libro sobre Excel que te ayudará a ser más hábil en el 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.

  

En el vídeo encuentra una explicación más gráfica y detallada de la macro que se presenta en este post; Suscribe a nuestro canal para que YouTube te avise cuando se suba nuevo contenido al canal, en el vídeo encontrarás una explicación gráfica y detallada del ejemplo que se muestra en este post.






 


Al descargar y abrir el archivo de Excel donde se encuentra el ejemplo, abriendo el módulo con el Editor de VBA, se puede observar una primera codificación antes del sub, la cual es para generar compatibilidad entre versiones de Excel de 32 y 64 bits, no está relacionado con la exportación de datos a TXT.

Luego si viene la codificación para exportar a TXT, en un primer momento la macro la macro determina el nombre con el que guardará el archivo TXT, eso se hace con estas lineas de código

nom = ActiveWorkbook.Name
pto = InStr(nom, ".")
nomarch = Left(nom, pto - 1)
myfile = ThisWorkbook.Path & "\" & nomarch & ".txt"

En la variable nom se guarda el nombre del archivo actual con la macro, a dicho nombre se le extrae la extensión xlsm y se carga en la variable nomarch, por ultimo en la variable myfile se carga el path o dirección en el directorio del archivo que está integrado por el nombre del fichero TXT, que en este caso se llama igual que el archivo xlsm con la macro, pero con extensión TXT.


⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛
Quizá sea de utilidad también

Como importar un archivo TXT separado por coma


Como insertar fotos al modificar una celda

Como hacer un link o hiperlink a google maps con Excel

⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛



⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛

Luego se determina la última fila con datos, que está indicando la fila hasta la cual se deben exportar los datos contenidos en la hoja1 de Excel, con el siguiente código:

uf = a.Range("A" & Rows.Count).End(xlUp).Row

Luego se recorre las filas y se va exportando a excel, como se hace, en la fila que recorre el bucle en ese momento se determina columna por columna cual es el dato existente en la celda y se va concatenando y exportando a de Excel a TXT, luego se sigue con la otra fila y así sucesivamente hasta que se termine el bucle con la última fila con datos, el código es:

Open myfile For Output As #1
For i = 2 To uf
C1 = a.Cells(i, 1)
C2 = a.Cells(i, 2)
C3 = a.Cells(i, 3)
C4 = a.Cells(i, 4)
C5 = a.Cells(i, 5)
C6 = a.Cells(i, 6)
C7 = a.Cells(i, 7)
Print #1, C1 & C2 & C3 & C4 & C5 & C6 & C7
Next i

El ejemplo que hemos denominado Como Exportar Desde Excel y Guardar en Archivo TXT, se puede descargar desde el final del post, a continuación está el código contenido en dicho ejemplo de macro.


Código que se inserta en un módulo de VBA

'**************https://programarexcel.com  **** https://youtube.com/programarexcel*********



#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 ExportaTXT()
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"
uf = a.Range("A" & Rows.Count).End(xlUp).Row

Open myfile For Output As #1
For i = 2 To uf
C1 = a.Cells(i, 1)
C2 = a.Cells(i, 2)
C3 = a.Cells(i, 3)
C4 = a.Cells(i, 4)
C5 = a.Cells(i, 5)
C6 = a.Cells(i, 6)
C7 = a.Cells(i, 7)
Print #1, C1 & C2 & C3 & C4 & C5 & C6 & 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.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends