Extraer información de varios libros de excel

Me pueden ayudar, tengo 100 archivos(libros) de excel, cada archivo posee tres hojas, necesito extraer la información de unas celdas en especificas de una de esas tres hojas, la hoja de la cual necesito extraer esta información se llama Liquidación Nomina, necesito copiar la información de las celdas H4, B5, C29 y C30 por cada hoja Liquidación Nomina de cada uno de los 100 archivos de excel y copiar estas celdas en un archivo de excel que se llama Consolidado, pero necesito que las celdas copiadas se peguen en unas celdas especificas en el archivo consolidado en la hoja1, por ejemplo cuando se abra el primer archivo de excel y se copie la información de las celdas H4, B5, C29 y C30 de la hoja Liquidación Nomina necesito que esta información se pegue en las celdas F3, I3, J3, y K3 del archivo Consolidado en la hoja 1, es decir la información copiada la celda H4 de la hoja Liquidación Nomina necesito que la pegue en la celda F3 de la hoja1 del archivo Consolidado, la información copiada la celda B5 de la hoja Liquidación Nomina necesito que la pegue en la celda I3 de la hoja1 del archivo Consolidado, la información copiada la celda C29 de la hoja Liquidación Nomina necesito que la pegue en la celda J3 de la hoja1 del archivo Consolidado, la información copiada la celda C30 de la hoja Liquidación Nomina necesito que la pegue en la celda K3 de la hoja1 del archivo Consolidado, ahora cuando se abra el segundo archivo de excel necesito que cuando se copie la información de las mismas celdas H4, B5, C29 y C30 de la hoja Liquidación Nomina se pegue la información ahora en las celdas F4, I4, J4, y K4 respectivamente de la H4 a la F4, de la B5 a la I4, de la C29 a la J4, de la C30 a la K4, y así sucesivamente para los demás archivos restantes de excel, las filas de la Hoja1 del archivo Consolidado van incrementado. Me base en varios foros y construí la siguiente macro pero solo me funciona para un archivo de excel:

Sub libros()
'Lee archivos del directorio
'Por.Dam
'Copia una hoja
ruta = "C:\Users\Usuario\Documents\ca\"
ChDir ruta
hoja = "Liquidación Prueba"
archi = Dir("*.xlsx*")
Set Actual = Workbooks("Consolidado")
On Error Resume Next
Do While archi <> ""
Workbooks.Open archi
If Err.Number = 0 Then
Actual. Activate
Workbooks("Consolidado"). Worksheets("hoja1").Range("F3") = Workbooks(archi). Worksheets(hoja). Range("H4")
Workbooks("Consolidado"). Worksheets("hoja1").Range("I3") = Workbooks(archi). Worksheets(hoja). Range("B5")
Workbooks("Consolidado"). Worksheets("hoja1").Range("J3") = Workbooks(archi). Worksheets(hoja). Range("C29")
Workbooks("Consolidado"). Worksheets("hoja1").Range("K3") = Workbooks(archi). Worksheets(hoja). Range("C30")
Workbooks("Consolidado"). Worksheets("hoja1").Range("L3") = Workbooks(archi). Worksheets(hoja). Range("C31")
Workbooks("Consolidado"). Worksheets("hoja1").Range("M3") = Workbooks(archi). Worksheets(hoja). Range("C32")
Workbooks("Consolidado"). Worksheets("hoja1").Range("N3") = Workbooks(archi). Worksheets(hoja). Range("C33")
Else
Err.Number = 0
End If
Application.DisplayAlerts = False
Workbooks(archi).Close
Application.DisplayAlerts = True
archi = Dir()
Loop
Application.DisplayAlerts = False
Workbooks(archi).Close
Application.DisplayAlerts = True
End Sub

1 respuesta

Respuesta
1

La macro que muestras debería funcionar para todos los archivos... pero escribe la informacion una encima de otra... es decir solo queda la ultima...

Esto porque en cada archivo tu escribes la información de la siguiente manera

Workbooks("Consolidado"). Worksheets("hoja1"). Range("F3") entonces siempre escribe en la misma celda...

Para arreglarlo:

Cambia

      Do While archi <> ""

por

      i=0

      Do While archi <> ""

          i=i+1

y además en cada escribe la información has el siguiente cambio:

Range("F3")=       por   Range("F3").Cells(i,1)=

Range("G3")=      por   Range("G3").Cells(i, 1)= y asi con todas esas filas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas