Macro para importar datos de txt a una hoja Excel

Estoy usando Excel 2003 y realmente es la primera vez que trabajo con el, bueno mi problemas es el siguiente. Tengo una carpeta que contiene varios archivos txt, estos contienen una columna de datos cada uno, y necesito hacer una macro que en una misma hoja copie los datos de los txt en cada columna, es decir cada txt en una columna, y que me ponga en la primera celda de la columna el nombre del archivo txt.

2 respuestas

Respuesta
9

Te mando mi solución, sigue estas instrucciones:

-En un archivo nuevo de excel copia esta macro.

-Graba el citado archivo excel dentro de la misma carpeta que contiene los txt.

-Con el archivo anterior abierto, ejecuta la macro y todo concluido.

Sub ejemplo()
'por luismondelo
mio = ActiveWorkbook.Name
ruta = ActiveWorkbook.Path
ChDir ruta & "\"
archi = Dir("*.txt")
Do While archi <> ""
Workbooks.OpenText archi, origin:=xlWindows, startrow:=1, DataType:=xlDelimited
otro = ActiveWorkbook.Name
Range("a1:a" & Range("a65000").End(xlUp).Row).Copy
Workbooks(mio).Activate
Range("av1").End(xlToLeft).Offset(0, 1).Select
ActiveSheet.Paste
Workbooks(otro).Close False
archi = Dir()
Loop
ActiveSheet.Columns("a:a").EntireColumn.Delete
MsgBox "proceso terminado"
End Sub

no olvides finalizar la consulta

Gracias por contestar a mi pregunta tan rapido, ya ejecute el código que me dio y se copian los datos de cada uno de los txt pero también necesito que se copie como encabezado de cada columna de datos el nombre del txt del que se copiaron, cómo se podría hacer? Muchas gracias

Cierto, te paso la nueva macro:

Sub ejemplo()
'por luismondelo
mio = ActiveWorkbook.Name
ruta = ActiveWorkbook.Path
ChDir ruta & "\"
archi = Dir("*.txt")
Do While archi <> ""
Workbooks.OpenText archi, origin:=xlWindows, startrow:=1, DataType:=xlDelimited
otro = ActiveWorkbook.Name
Range("a1:a" & Range("a65000").End(xlUp).Row).Copy
Workbooks(mio).Activate
Range("av2").End(xlToLeft).Offset(0, 1).Select
ActiveSheet.Paste
Range("av1").End(xlToLeft).Offset(0, 1).value = otro
Workbooks(otro).Close False
archi = Dir()
Loop
ActiveSheet.Columns("a:a").EntireColumn.Delete
MsgBox "proceso terminado"
End Sub

recuerda finalizar

Respuesta

Estoy utilizando tu macro para importar más de un archivo en Excel y el problema que tengo es que cuando me llega a la columna AU los archivos restantes me los importa en la columna C. Habría alguna forma de utilizar todas las columnas para importar tantos archivos que se quisiese?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas