Macro para importar datos de varios Txt a una hoja Excel

Estoy usando Excel 2013 y estoy teniendo problemas para importar los datos que necesito. Tengo una carpeta que contiene varios archivos txt, estos contienen varias columnas de datos cada uno, y necesito hacer una macro que en una misma hoja copie los datos de los txt separandolos por columnas. De estas columnas necesito datos especificos y debo hacer 2 operaciones. Inicialmente separo los datos delimitados por (coma) y (2 puntos) y luego los separo de ancho fijo (0,1), (0,8), (0,26), sin importar que me reemplace o no los datos existentes de la primera separación por columnas.

He intentado varias formas y he dado con la manera, alguien que me pueda ayudar por favor.

El código en el Txt llega así:

P$DCCSMT MF_ARAUCA FECHA: 170404, EXITOSAS: 2, ERRADAS: 0, HORA: 2027, VALOR: 0.00, VLR. DISP. BILL: 0, VLR. DISP.MON: 0, VLR. RECIBIDO: 0

Al hacer la primera separación queda 1 celda con esta información:
P$DCCSMT MF_ARAUCA FECHA: 170404

Y esta celda es la que necesito separar delimitada para que me separe en una celda diferente el valor "MF_ARAUCA"

Adicional, no sé si sea posible. Que la primera celda, por ejemplo donde quedó P$DCCSMT se cambie por el nombre del archivo Txt, o que me cree una columna antes de todos los datos con el nombre del Txt ya que la idea es pegar uno debajo del otro todos en la misma hoja. No sé si me hago entender.

1 Respuesta

Respuesta

Para poder hacer lo que necesitas deberás utilizar las fórmulas EXTRAE Y HALLAR

De este modo, si el texto está en la celda A1, para conseguir "MF_ARAUCA" la fórmula seria:

=EXTRAE(A1;(HALLAR(" ";A1))+1;(HALLAR(" ";A1;(HALLAR(" ";A1))+1))-(HALLAR(" ";A1)))

Básicamente lo que haces es extraer el texto que hay entre el primer y el segundo espacio

Si lo quieres hacer por código VBA en vez de fórmula, deberás utilizar InStr y Mid

Para tu segunda pregunta, puedes indentificar una variable en VBA con el nombre del archivo, por ejemplo:

nombre = ThisWorkbook.Name

y luego darle el valor nombre a la celda o rango que necesites aqui lo tienes explicado utilizando =CELDA("nombrearchivo")

http://www.forosdelweb.com/f90/obtener-nombre-archivo-excel-493696/ 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas