Leer archivo txt separado por tabulador desde vba

señores buen día =)

Estoy programando con VBA de Access 2007

Les comento en breve el problema, estoy intentando leer los datos un archivo TXT que tiene campos separados por “Tabulaciones”.

Lo que intento hacer es leer esos datos del archivo .txt para guardarlos en una tabla.

Ejemplo de estructura de mi archivo alumno.txt

Nombre Apellido Matricula

Luis Sánchez 52300
Juan González 90200

Y el código con el que intento leer esos datos es el siguiente:

Dim strNombre, strApellido, strMatricula as String
Dim strTexto as string    

Open "C:\Prueba\alumno.txt" For Input As #1

   While Not EOF(1)

      Line Input #1, strTexto

      strNombre = strTexto & vbTab & strApellido = strTexto & vbtab & strMatricula = strTexto & chr(10) & chr(13)

      MsgBox (" " & strNombre & " " & strApellido & " " & strMatricula & "")

   Wend

Close #1

De esta manera intento leer el contenido de cada campo separado por el tabulador del archivo .txt y mostrarlo en un mensaje. Sin embargo el mensaje me arroja la leyenda de “Falso”

Agradeciendo su atención le envío un saludo.

...

..

.

1

1 respuesta

Respuesta
2

¿Por qué pones tantos signos igual en esta linea: strNombre = strTexto & vbTab & strApellido = strTexto & vbtab & strMatricula = strTexto & chr(10) & chr(13)?

Así solo consigues que Access lo interprete como una comparación entre dos valores y el resultado de esa comparación siempre será verdadero o falso (en tu caso siempre falso) y eso es lo que te muestra el mensaje...

Gracias por tu pronta respuesta

El ejemplo que puse, fue un intento que hice para tratar de leer las líneas del archivo txt separadas por el tabulador.
por ejemplo:
"Luis" queria gregarla a strNombre,
"Sanchez" intente agregarlo a strApellido
"52300" intente agregarlo a la variable strMatricula

Para que me mostrara en el mensaje, los datos separados por el tabulador
Espero darme a entender, de antemano gracias

Si lo quieres hacer así, tienes que asignar primeramente un valor a cada variable (strNombre, strApellido...) y luego encadenarlas todas para formar el mensaje.

Quisiera añadir dos cosas:

1º/ Para mostrar un mensaje como el que pretendes, lo puedes conseguir simplemente con:

msgbox strTexto

Pues al encadenar sin más las tres variables (cuando les des el valor correspondiente), el resultado es igual a cada línea del txt

2º/ Una forma sencilla que se me ocurre para obtener los distintos "campos" de cada línea, es rellenar una matriz con la función Split(), por ejemplo:

Dim strNombre As String, strApellido As String, strMatricula As String
Dim strTexto As String
Dim datos() As String
Open Application.CurrentProject.Path & "\Prueba.txt" For Input As #1
   While Not EOF(1)
      Line Input #1, strTexto
      datos = Split(strTexto, vbTab)
      MsgBox ("Nombre y Apellido: " & datos(0) & " " & datos(1) & ", Matrícula: " & datos(2))
   Wend
Close #1

Y a partir de ahí, ya serás capaz de seguir tu solo para pasarlo a las tablas...

Amigo, la información que me proporcionaste ha sido de gran ayuda y clara

Había visto en internet la función Split, pero no lograba entenderla.
Sin embargo con el ejemplo ha sido claro y al grano
Muchas gracias, saludos

Gracias por por el dato, ha sido de gran ayuda
Había visto en internet la función Split, pero no lograba entender como usarla
El ejemplo proporcionado ha sido claro y directo
Saludos.

..

.

.

Me alegra que te sirviera.

Por si es de tu interés, mira el método TransferText del objeto DoCmd. Si haces una importación del archivo a una tabla (con el asistente) y la guardas, la puedes usar con ese método, simplificando mucho el proceso...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas