VB - importar campos desde un archivo TXT

Primero agradecer la ayuda en todas las dudas que he tenido sin tener que preguntarles.
Tengo un inconveniente al intentar importar datos de un txt con campos delimitados por ";" con esta estructura:
200439;937880870;662569265#;Móvil ;20080331;10:34:47;00:03:57
Mi primera solución paso por combinar la función lstr que carga una variable y luego varios mid que extraen los datos de cada linea en función del lstr. Funciona pero es muy lento ya que son muchos registros.
La segunda fue utilizar la función input# que por lo que leí me viene de perillas. El problema es que da error 6. Por lo que vi si carga alguna variable pero luego la palma antes de terminar el primer registro.

1 respuesta

Respuesta
1
Cuando desde Visual Basic creo un archivo texto con Write #1 Campo1, Campo2 ...
Visual escribe los campos entre comillas y delimitados por ","
De esa forma al leerlos con Input# Campo1, Campo2 ... funciona de maravilla
Te sugiero que si es posible cambies tu archivo de entrada a :
"200439","937880870","662569265#","Móvil","20080331","10:34:47","00:03:57"
Suerte !
El archivo me llega en ese formato, no lo genero yo mismo y es imposible pedirle a proveedor que lo cambie.
Pego el código que tengo ahora haber si se puede optimizar, gracias
Do While Not EOF(intArchivo)
Line Input #intArchivo, strLinea
vInStr1 = InStr(1, strLinea, ";", vbTextCompare)
vLarCam = vInStr1 - 1
vCodPro = Left(strLinea, vLarCam)
vInStr2 = InStr(vInStr1 + 1, strLinea, ";", vbTextCompare)
vLarCam = vInStr2 - vInStr1 - 1
vNumCLI = Mid(strLinea, vInStr1 + 1, vLarCam)
vInStr1 = InStr(vInStr2 + 1, strLinea, ";", 1)
vLarCam = vInStr1 - vInStr2 - 1
vNumDes = Mid(strLinea, vInStr2 + 1, vLarCam)
vInStr2 = InStr(vInStr1 + 1, strLinea, ";", vbTextCompare)
vLarCam = vInStr2 - vInStr1 - 1
vNomDes = Mid(strLinea, vInStr1 + 1, vLarCam)
vInStr1 = InStr(vInStr2 + 1, strLinea, ";", 1)
vLarCam = vInStr1 - vInStr2 - 1
vCodFec = Mid(strLinea, vInStr2 + 1, vLarCam)
vInStr2 = InStr(vInStr1 + 1, strLinea, ";", vbTextCompare)
vLarCam = vInStr2 - vInStr1 - 1
vHora = Mid(strLinea, vInStr1 + 1, vLarCam)
vInStr1 = InStr(vInStr2 + 1, strLinea, ";", 1)
vLarCam = Len(strLinea) - vInStr2 - 1
vDurCos = Mid(strLinea, vInStr2 + 1, vLarCam)
txtEditor = txtEditor & vCodPro & vNumCLI & vNumDes & vNomDes & _
vCodFec & vHora & vHora & vDurCos & vbCrLf
Loop
Si no hay ninguna otra opción entonces seguiré para adelante con este.
Avisame para cerrar la pregunta, gracias.
Si es un archivo que entrega un tercero y no lo puede cambiar, no veo otra manera de codificarlo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas