Tengo un archivo .txt que quiero pasar a Excel utilizando VBA, ¿Cómo hago para que se corte en columnas sea con un ancho fijo?

Tengo un archivo que se genera diariamente con extensión .txt el cual administro a través de Excel mediante macros, el problema es que a diario tengo que dividir las columnas pero no tengo ningún dato que marque el cambio de dato. Esto lo hago mediante el separador de columnas, he estado buscando y se como hacerlo si tuviera una coma como separador o cualquier otro carácter. Pues he encontrado ejemplos, haciéndolo de ancho delimitado por un separador. Pero como yo necesito hacerlo con ancho fijo y digo de cual a cual carácter nadie me sabe dar alguna idea, lo he intentado hacer con arrays me marca un error. ¿Alguien tiene idea de como puedo manejarlo?

Así se generan mis renglones

2016-02-030004NAUCALPAN PERIFÉRICO 3160DIV. Metropolitana adjunta i 25402016-02-030006polanco castelar 3160div. Metropolitana adjunta i 2553

Necesito que las columnas queden así.

2016-02-03 0004 NAUCALPAN PERIFÉRICO 3160 DIV. Metropolitana adjunta i 2540

2016-02-03 0006 POLANCO CASTELAR 3160 DIV. Metropolitana adjunta i 2553

1 Respuesta

Respuesta
1

H o l a:

Para saber si se puede automatizar con una macro (vba), realiza lo siguiente:

Entra a excel y activa la grabadora de macros en el menú Programador, Grabar macro:


En la ventana "Grabar macro" presiona Acepta.

Ahora, abre tu archivo txt y realiza la separación de columnas con el ancho fijo que necesitas.

Cuando termines de hacer la separación, regresa al menú Programador y presiona el botón "Detener grabación".

Guarda el archivo de excel habilitado para macros.

Envíame por correo el archivo de excel con la macro y el archivo txt que cargaste, para revisarlos.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Denisse Ayala Corrales” y el título de esta pregunta.

La voy a poner en el foro por si le sirve a alguien:

Sub CortarTxt()
    mybook = ActiveWorkbook.Name
    strArchivo = Application.GetOpenFilename
    If strArchivo = False Then Exit Sub
    Workbooks.OpenText Filename:=strArchivo _
        , Origin:=xlMSDOS, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:= _
        Array(Array(0, 1), Array(10, 1), Array(14, 1), Array(54, 1), Array(58, 1), Array(98, 1), _
        Array(102, 1), Array(142, 1), Array(149, 1), Array(190, 1), Array(194, 1), Array(196, 1), _
        Array(224, 1), Array(227, 1), Array(247, 1), Array(249, 1), Array(261, 1), Array(271, 1), _
        Array(290, 1)), TrailingMinusNumbers:=True
End Sub


Avísame si requieres de algo más.

Si en algo te sirvió mi ayuda, recuerda valorar la respuesta.

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas