Visual Basic para Aplicaciones - Extraer Fila de un TXT y condicional.

Life is soft - evento anual de software empresarial
 
Vista:
Imágen de perfil de Carlos César
Val: 6
Ha disminuido su posición en 12 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Extraer Fila de un TXT y condicional.

Publicado por Carlos César (2 intervenciones) el 01/08/2019 01:21:42
Hola Buen Día,

Vengo con una duda interesante estoy cerca de conseguirlo pero necesito de su apoyo.

Tengo un archivo TXT que trae una linea de información extensa, quiero extraerla y luego acomodarla en Excel, les pongo un ejemplo:

HDAAAAAMEBBBBBBCRFFFFFFMETTTTTTCRQQQQQQLTMMMMM

es un ejemplo de el archivo, el original es más grande.
la idea es la siguiente los separadores que tengo son HD, ME, CR y LT.

HD es siempre el encabezado en el archivo solo sale 1 vez y mide 5 caracteres.
ME sale varias veces y es de 6 caracteres
CR sale varias veces y es de 6 caracteres
LT solo sale una vez y nos indica el final del archivo y es de 5 caracteres.

lo hice más o menos así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub Proceso ()
 
Dim Texto as String
Dim Cadena as String
Dim HD as String
Dim ME as Sting
 
Archivo = "C:\Ejemplo\Dato.TXT
Open Archivo For Input As #1

Line Input #1, Texto

Cadena = Texto
HD = mid(Cadena,1,7)
ME = mid(Cadena,8,15)

Range("A1").Value = HD
Range("A2").Value = ME


End Sub

Y pues ya me pone en la celda A1 HDAAAAA y en la celda A2 MEBBBBBB.
lo que busco hacer es un Ciclo donde me busque HD me lo pone en una celda, ME en otra, el CR en otra, luego volverá a encontrar otro ME y me lo ponga en la que sigue luego otro CR y así sucesivamente hasta el final del archivo que seria en LT.

cabe señalar que los ME y CR siempre son de 6 caracteres y el HD y LT siempre de 5 y estos últimos solo aparecen una vez en el archivo.

espero me haya explicado.

Saludos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Hector Madriz
Val: 192
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Extraer Fila de un TXT y condicional.

Publicado por Hector Madriz (29 intervenciones) el 01/08/2019 05:13:35
Buen dia, prueba esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub LeerArchivo()
    Open "D:\archivo.txt" For Input As #1
    Line Input #1, texto
    Cells(1, 1).Value = Mid(texto, 3, 5)
    Cont = 8
    F = 2
    Do
         If Mid(texto, Cont, 2) = "ME" Then Cells(F, 1).Value = Mid(texto, Cont + 2, 6)
         If Mid(texto, Cont, 2) = "CR" Then
            Cells(F, 2).Value = Mid(texto, Cont + 2, 6)
            F = F + 1
         End If
         Cont = Cont + 8
    Loop Until Cont >= Len(texto)
    Cells(F, 1).Value = Mid(texto, Len(texto) - 4, 5)
    Close #1
End Sub

Ten presente que el script requiere del formato estricto que indicas:
"Leer una sola linea del archivo"
"ME y CR siempre son de 6 caracteres y el HD y LT siempre de 5 y estos últimos solo aparecen una vez en el archivo"
"HD(5) -> ME(6) -> CR(6) -> ME(6) -> CR(6) -> ME(6) -> CR(6) -> LT(5)"

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
Imágen de perfil de Carlos César
Val: 6
Ha disminuido su posición en 12 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Extraer Fila de un TXT y condicional.

Publicado por Carlos César (2 intervenciones) el 01/08/2019 05:59:16
Muchas Gracias Hector, si funciona así, ya me diste una idea, es que el archivo original, el HD mide 180, el ME creo 800, CR 900 y LT 50.

En este caso el Cont cambiaría no? y quizá tendría que meter otro uno para ME y otro para CR?.

Saludos y Gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Hector Madriz
Val: 192
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Extraer Fila de un TXT y condicional.

Publicado por Hector Madriz (29 intervenciones) el 01/08/2019 16:05:12
siempre a la orden...cualquier cosa anexa un fragmento del archivo original.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar