Extraer información de múltiples archivos txt a un exl

Tengo múltiples archivos txt todos tienen la misma estructura de la información pero requiero una macro que me permita extraer toda la información a un exl, pero que en una columna traiga el nombre del archivo así puedo identificar esa información a que archivo pertenece

1 respuesta

Respuesta
1

[Ho la  y bienvenida a Todoexpertos:

Me ayudas con la siguiente información y en este orden :

- Cómo se llama la carpeta donde están los archivos.

- La columna con el nombre del archivo será la columna A

- Cuántas columnas tienen los archivos

- Cuántas filas aproximadamente tiene un archivo

- Puedes poner una imagen con una muestra del contenido de un archivo txt

- Y una imagen de cómo quieres el resultado en una hoja de excel.

- Los datos de los archivos los quieres en un sola columna o se pueden separar en columnas, tienen algún identificador para separase en columnas.

Hola Dante

Te doy mis respuestas

1. Así nombre la carpeta donde están todos los txt C:\txt

2. Los archivos Txt están todos tienen la misma estructura y es la siguiente, podrían quedan en la columna b

91714293915000002447928190031700400341776048000106865PPRE000024479281DIA000024479281

3. Las filas varían pero no van a tener más de 1000 filas

4. El resultado en exl que busco es

Te agradezco

Prueba la siguiente macro

Sub Extraer_Information()
  Dim wb2 As Workbook
  Dim sh As Worksheet
  Dim arch As Variant
  Dim ruta As String
  Dim lr1 As Long, lr2 As Long
  '
  Application.ScreenUpdating = False
  '
  Set sh = Sheets("Hoja1")
  sh.Cells.ClearContents
  sh.Range("A1:B1").Value = Array("nombre", "información")
  ruta = "C:\trabajo\txt\"
  arch = Dir(ruta & "*.txt")
  '
  Do While arch <> ""
    Set wb2 = Workbooks.Open(ruta & arch)
    lr1 = sh.Range("B" & Rows.Count).End(3).Row + 1
    wb2.Sheets(1).Range("A1:A" & Range("A" & Rows.Count).End(3).Row).Copy sh.Range("B" & lr1)
    lr2 = sh.Range("B" & Rows.Count).End(3).Row
    sh.Range("A" & lr1 & ":A" & lr2).Value = arch
    wb2.Close False
    arch = Dir()
  Loop
  Application.ScreenUpdating = True
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas