25 septiembre, 2023

EXPORTAR ARCHIVOS TXT DELIMITADOS POR CARACTERES DESDE EXCEL

Hace unas semanas publiqué una entrada sobre cómo importar archivos .txt desde Excel, lo hice pensando en que un tiempo después publicaría algo relacionado con exportar archivos .txt desde Excel.

Pues bien, hoy trataremos precisamente de cómo escribir en un archivo .txt la información contenida de una hoja Excel, o lo que es lo mismo cómo exportar nuestros datos a un archivo .txt.

Como el archivo .txt que podemos generar puede ser o bien delimitado por caracteres o bien de ancho fijo, voy a crear una entrada para cada uno de los casos, dado que el ancho fijo requiere un poco más de programación.

En el ejemplo de hoy nos quedaremos con  la generación de un .txt delimitado por caracteres.

Los datos que vamos a pasar al .txt son los que había utilizado para una entrada anterior con la información de matriculaciones de vehículos por comunidades autónomas, los datos están en la hoja1:

EXPORTAR ARCHIVOS TXT DELIMITADOS POR CARACTERES

Para realizar este proceso, lo primero que tenemos que hacer es crear un archivo .txt, esto es muy sencillo, lo podemos crear directamente con la macro (con el método Open)  o de forma manual como un archivo nuevo con el bloc de notas. Para este ejemplo, el archivo lo creará la propia macro, y lo podemos hacer de 2 formas:

Especificando el directorio y se creará ahí de forma automática:
Archivo_txt = "E:\EJEMPLO.txt"
o creándose automáticamente en el mismo lugar donde tengamos este archivo Excel:
Archivo_txt = ThisWorkbook.Path & "\" & "EJEMPLO.txt"

Esta es la macro:

Sub EXPORTAR_TXT_CARACTERES()
Dim i As Double
'Creamos automáticamente un .txt en blanco que llamamos EJEMPLO
'el archivo se creará en la misma unidad que tenemos el Excel.
Archivo_txt = ThisWorkbook.Path & "\" & "EJEMPLO.txt"
'si queremos cambiar su ubicación basta con poner Archivo_txt = "E:\EJEMPLO.txt"
Open Archivo_txt For Output As #1
With Sheets(1)
fin = Application.CountA(Range("A:A"))
'realizamos bucle para pasar los datos al txt
For i = 1 To fin
'ejemplo de txt delimitado por caracteres (en este caso punto y coma)
Print #1, .Cells(i, 1) & ";" & .Cells(i, 2) & ";" & .Cells(i, 3) & ";" & .Cells(i, 4)
Next i
Close
End With
End Sub

Como podéis ver mediante un bucle for/next vamos asignando cada elemento de la hoja a la variable definida i y luego lo pasamos al print para llenar nuestro .txt. El carácter que he utilizado como delimitador es el punto y coma «;» y este es el resultado después de exportar los datos:

EXPORTAR ARCHIVOS TXT DELIMITADOS POR CARACTERES1

Es importante tener en cuenta que los datos que tenemos en Excel no siempre son texto o número, pueden ser formatos de hora o fecha, etc, para mantener dicho formato, tendríamos que aplicar un “format” a cada campo. Por ejemplo: si los datos de la primera columna fuesen fechas sería así:

Format(.Cells(i, 1), "dd/mm/yyyy")

Podemos incluir los encabezados, para este caso no existe problema dado que delimitamos con un carácter, sin embargo cuando hablamos de ancho fijo, debemos omitirlos.

Pues esto ha sido todo por hoy, ya tenemos una herramienta que nos ayuda a exportar nuestros datos (delimitados por caracteres) a un txt. En los próximos días publicaré sobre archivos .txt de ancho fijo. 🙂

Descarga el archivo de ejemplo pulsando en: EXPORTAR ARCHIVOS TXT DELIMITADOS POR CARACTERES

Comparte este post

6 comentarios en «EXPORTAR ARCHIVOS TXT DELIMITADOS POR CARACTERES DESDE EXCEL»

  1. Puedes utilizar la función len para eliminar espacios:

    Print #1, Len(.Cells(i, 1) & «;» & .Cells(i, 2) & «;» & .Cells(i, 3) & «;» & .Cells(i, 4))

    Saludos.

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies