Importar varios archivos txt a una sola hoja de excel

Tengo este macro que importa los txt en distintas hojas del excel, pero yo quiero que aparezca en una sola hoja y en la primera columna los nombres de los archivos y en la segunda columna el contenido de los txt y así sucesivamente con las demás filas.

Sub abrir_txt()
On Error Resume Next
milibro = ActiveWorkbook.Name
Set navegador = CreateObject("shell.application")
carpeta = navegador.browseforfolder(0, "SELECCIONA CARPETA", 0, "c:\").items.Item.Path
ChDir carpeta & "\"
archi = Dir("*.txt")
Do While archi <> ""
Workbooks.OpenText archi, origin:=xlWindows, startrow:=1, DataType:=xlDelimited
otro = ActiveWorkbook.Name
ActiveSheet.Copy before:=Workbooks(milibro).Sheets(1)
Workbooks(otro).Close False
archi = Dir()
Loop
End Sub

1 respuesta

Respuesta
3

No podrás copiar la hoja completa como lo hace ahora (ActiveSheet. Copy) porque el pegado se hará en un rango parcial. Por lo tanto, se necesita copiar solo el rango ocupado, e decir 'usedrange'.

Dejo aquí la parte del bucle 'DO':

'x Elsamatilde
Do While archi <> ""
    'se establece la primer fila libre según col B
    filx = Workbooks(milibro).Sheets(1).Range("B" & Rows.Count).End(xlUp).Row + 1
    'se abre el liro txt y se guarda su nombre para luego cerrarlo
    Workbooks.OpenText archi, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited
    otro = ActiveWorkbook.Name
    'se establece el rango utilizado
    dire = Workbooks(otro).ActiveSheet.UsedRange.Address
    'se copia el rango utilizado y se pega en col B a partir de la fila libre
    Range(dire).Copy Destination:=Workbooks(milibro).Sheets(1).Range("B" & filx)
    'se coloca en col A el nombre del libro capturado
    Workbooks(milibro).Sheets(1).Range("A" & filx) = otro
    'se cierra el libro txt
    Workbooks(otro).Close False
    'se busca otros libros repitiendo el bucle
    archi = Dir()
Loop

Sdos y no olvides valorar la respuesta si resuelve tu consulta, sino comenta y lo seguimos tratado.

Te recuerdo que si el tema quedó resuelto debes valorar la consulta desde las opciones que encontrarás al final de esta respuesta para darla por cerrada.

Sino comenta y lo seguimos tratando.

Sdos!

No se a que te refieres con esos conceptos, podrías mostrarme como quedaría el macros completo, estoy probando añadir ese código pero no logro lo que estoy buscando.

También he conseguido este código pero tampoco funciona

Sub ContarHojas()
Dim Item As Worksheet
For Each Item In ActiveWorkbook.Sheets
If Item.Name <> "Hoja1" Then
MsgBox Item.Name
MsgBox "llamar a macro que consolide"
End If
Next Item
End Sub

El código que me muestras solo envía mensajes y no hace nada más...

Enviame 1 o 2 txt y te armo la macro en un libro vacío... o solicítame un ejemplo y te lo envío con mis txt. Mis correos aparecen en mi sitio que dejo al pie (puedes utilizar cibersoft. Arg de gmail)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas