IMPORTAR ARCHIVOS TXT DELIMITADOS POR CARACTERES

Hace unos días estuve buscando información en el INE sobre nacimientos ocurridos en España durante los últimos años. No buscaba una información concreta sino datos generales para confeccionar una pequeña visión evolutiva sobre el tema. Sin embargo, me encontré con varios archivos denominados de “microdatos” donde el volumen de información era considerablemente alto y específico. Esta información estaba almacenada en ficheros .txt y, en concreto, tanto de ancho fijo como delimitado por diferentes caracteres.

Y lo cierto es que en la mayor parte de las veces, la información que buscamos y necesitamos viene contenida en un fichero plano (.txt) donde por su estructura y capacidad podemos almacenar grandes volúmenes de información. Dada su importancia y que hoy en día toma, si cabe, mayor notoriedad con el auge del Big Data y otros conceptos, trataré de explicar mediante el uso de VBA la manera de importar un fichero .txt delimitado por diferentes caracteres.

En este post vamos a ver como podemos importar un fichero .txt delimitado por caracteres ,y para este caso en particular, por tabulaciones.

Veamos mediante un ejemplo la estructura de un fichero de este tipo, que he pasado de Excel a “Texto delimitado por tabulaciones” (he utilizado la misma base de datos del post anterior) . Así es como tenemos la información del .txt, una vez que abrimos los datos en el blog de notas:

IMPORTAR TXT DELIMITADO

Ahora vamos a utilizar la siguiente macro para importar toda la información, como siempre os comento el proceso en el código:

Sub Import_TXT_Delimitado()
'Definimos variables a utilizar
Dim Filtro As String
Dim nFichero As Integer
Dim sCadena As Variant
Dim i, j As Double
nFichero = FreeFile
'indicamos que tipo de archivo que vamos a seleccionar (txt)
Filtro = " TXT(*.TXT),"
'buscamos el archivo
txt = Application.GetOpenFilename(Filtro)
'si existe fichero comenzamos la instrucciÓn, de lo contrario el proceso no se 'inicia
If txt <> Empty Then
'mediante un bucle do while recorremos todas las líneas de información del txt
Open txt For Input As nFichero
i = 0
Do While Not EOF(nFichero)
Line Input #nFichero, datos
i = i + 1
'para extraer la información de cada línea de datos y entre cada espacio tabulado
'usamos la función Split, en la detallamos que los datos están delimitados por 'tabulaciones "vbTab"
'si estuviesen delimitados por espaciones, sería " " y por comas ","
sCadena = Split(datos, vbTab)
'delimitamos el tamaño de la matriz (linea de datos).
fin = UBound(sCadena) + 1
'mediante un bucle for - next vamos incorporando en cada fila de Excel (i) la 'información de cada linea del txt
'y en cada columna (j) la información de cada espacio delimitado.
For j = 1 To fin
With Sheets(1)
.Cells(i, j).Value = sCadena(j - 1)
End With
Next j
Loop
'por último cerramos el proceso.
Close nFichero
End If
End Sub

Como podéis apreciar, al sintaxis sería: abrir el archivo TXT, determinar su longitud mediante un bucle do-while, luego determinar dentro de cada línea de datos, la longitud de esos datos y mediante un bucle for-next trasladar la información a nuestra hoja Excel. Aquí podéis ver un ejemplo de un bucle dentro de otro bucle (que comentaba en el post anterior)

Es imprescindible tener en cuenta qué tipo de delimitaciones tenemos en nuestro txt, dado que si nos equivocamos el proceso fallará. Solo tendréis que modificar esta parte del código donde definimos la cadena de datos para delimitarla, aquí os dejo algunos ejemplos:

sCadena = Split(datos, vbTab)tabulaciones
sCadena = Split(datos," ")espacios
sCadena = Split(datos, ",")comas
sCadena = Split(datos,";")punto y coma

Y con esto ya hemos finalizado nuestro pequeño proceso para importar archivos de texto delimitados por caracteres 🙂

En el próximo post os mostraré el código para importar .txt de ancho fijo, que aunque es muy similar, tiene sus propias características y especificaciones.

Os dejo los dos archivos, el archivo Excel y el archivo de texto.

Descarga el archivo de ejemplo pulsando en: IMPORTAR TXT DELIMITADO POR CARACTERES

Descarga el archivo TXT de ejemplo pulsando en: ARCHIVO TXT DELIMITADO

 

Anuncios

2 pensamientos en “IMPORTAR ARCHIVOS TXT DELIMITADOS POR CARACTERES

  1. Pingback: IMPORTAR ARCHIVOS TXT DE ANCHO FIJO | Excel Signum

  2. Pingback: EXPORTAR ARCHIVOS TXT DELIMITADOS POR CARACTERES DESDE EXCEL | Excel Signum

¿Te ha gustado?. Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s