Importar datos de varios libros de Excel en la hoja resumen

Por alguna necesidad, es común crear un libro nuevo con la misma estructura de columnas, por ejemplo, tener un libro por cada mes o un libro por cada proveedor, o por cliente, en fin, las razones pueden ser variadas, y luego necesitamos hacer un resumen de esos libros.

Extraer datos de varios archivos Excel.

Excel permite resumir el contenido de varios libros en una sola hoja de uno de los libros, lo que se puede hacer mediante macros.

importar-tados-varios-libros-excel-1

Como pueden observar en la imagen anterior, los archivos de agosto, septiembre y octubre, tienen las mismas columnas, el nombre de la hoja “Hoja1” es el mismo, y en las 3 hojas, los datos empiezan en la fila 2.

Importar datos a una hoja resumen con una macro.

En el libro donde vas a poner la macro, debes tener 2 hojas con los nombres “Valores” y “Resumen”. La macro se encarga de leer los libros y de importar los datos en la hoja “Resumen”. Para lograr el objetivo, previamente, en la hoja llamada “Valores”, se deben capturar los siguientes datos:

  1. El nombre de la carpeta, donde se encuentran los archivos a importar.
  2. El nombre de la hoja que contiene los datos.
  3. La fila inicial de los datos.
  4. La columna principal.

Cada uno de los datos se debe capturar en su celda correspondiente, como se muestra en la siguiente imagen:

importar-datos-varios-libros-excel-2

Nota: En la hoja de Excel van unos comentarios para hacer más comprensible la captura de los valores.

Macro para importar libros en Excel.

Sub Importar_Datos()
Set l1 = ThisWorkbook
Set h1 = l1.Sheets("Valores")
Set h2 = l1.Sheets("Resumen")
h2.Cells.ClearContents
'
ruta = h1.[B5]
hoja = h1.[B6]
fila = h1.[B7]
colu = h1.[B8]
'
mensaje = validaciones(ruta, hoja, fila, colu)
If mensaje <> "" Then
MsgBox mensaje, vbExclamation, "IMPORTAR ARCHIVOS"
Exit Sub
End If
'
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.StatusBar = False
Application.Calculation = xlCalculationManual
'
If Right(ruta, 1) <> "\" Then ruta = ruta & "\"
arch = Dir(ruta & "*.xls*")
i = 0
Do While arch <> ""
i = i + 1
Application.StatusBar = "Importando Libro : " & i & " de : " & n
Set l2 = Workbooks.Open(ruta & arch)
existe = False
If IsNumeric(hoja) Then
If l2.Sheets.Count >= hoja Then
existe = True
Set h22 = l2.Sheets(hoja)
Else

End If
Else
For Each h In l2.Sheets
If LCase(h.Name) = LCase(hoja) Then
existe = True
Set h22 = l2.Sheets(hoja)
Exit For
End If
Next
End If
'
If existe Then
u22 = h22.Range(colu & Rows.Count).End(xlUp).Row
u2 = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
h22.Rows(fila & ":" & u22).Copy
h2.Range("A" & u2).PasteSpecial xlValues
End If
'
l2.Close False
arch = Dir()
Loop
'
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.StatusBar = False
Application.Calculation = xlCalculationAutomatic
'
MsgBox "Proceso terminado, archivos importados a la hoja resumen", vbInformation, "IMPORTAR ARCHIVOS"
End Sub
'
Function validaciones(ruta, hoja, fila, colu)
validaciones = ""
If ruta = "" Then
validaciones = "Escribe la Carpeta donde están los archivos"
Exit Function
End If
If Dir(ruta, vbDirectory) = "" Then
validaciones = "No existe la Carpeta"
Exit Function
End If
If hoja = "" Then
validaciones = "Escribe el nombre o número de hoja"
Exit Function
End If
If fila = "" Or Not IsNumeric(fila) Or fila < 1 Then
validaciones = "Escribe la fila inicial"
Exit Function
End If
If colu = "" Or IsNumeric(colu) Then
validaciones = "Escribe la columna principal"
Exit Function
End If
'
If Right(ruta, 1) <> "\" Then ruta = ruta & "\"
arch = Dir(ruta & "*.xls*")
n = 0
Do While arch <> ""
n = n + 1
arch = Dir()
Loop
If n = 0 Then
validaciones = "No hay archivos de excel a importar en la carpeta : " & ruta
Exit Function
End If
End Function

Sigue las Instrucciones para un botón y ejecutar la macro.

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: Importar_Datos
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

Una vez capturados los valores puedes ejecutar la macro. El resultado lo verás en la hoja “Resumen”

Descargar archivo de ejemplo.

Guía Laboral 2024
Conozca sus derechos y obligaciones laborales como trabajador o como empleador, y evítese problemas. Ver más.

Forma de citar este artículo (APA):

Gerencie.com. (2021, abril 3). Importar datos de varios libros de Excel en la hoja resumen [Entrada de blog]. Recuperado de https://www.gerencie.com/importar-datos-de-varios-libros-de-excel-en-la-hoja-resumen.html

Recomendados.

Deje su opinión o su pregunta. Trataremos de darle respuesta.
Su comentario o pregunta será editada automáticaente por el sistema.

Regístrese para informarle cuando se responda su pregunta.

12 comentarios
  1. Erick agosto 6 de 2024

    Extraordinario aporte. Muchas gracias por publicarlo. Yo lo utilicé para obtener información de 80 archivos Excel y sin contratiempos.

    Responder a Erick
    • Gbot
      Gbot en respuesta a Erick agosto 17 de 2024

      Gracias por su comentario. Nos alegra saber que la herramienta le fue útil y cumplió con sus expectativas.

      Responder a Gbot
  2. Raulin enero 24 de 2023

    Buena tarde. ¿Cómo puedo hacer para que la lectura de los datos inicie en la fila X y termine en la fila Z?

    Gracias.

    Responder a Raulin
    • Gbot
      Gbot en respuesta a Raulin agosto 17 de 2024

      Para que la lectura de los datos inicie en una fila X y termine en una fila Z, debe utilizar un bucle for con el método getRow() para determinar las filas a leer. Supongamos que queremos iniciar la lectura desde la fila 5 hasta la 10. El código sería algo así: En este caso se leen las columnas A, B y C (índices de columna 0 a 2) entre las filas 5 y 10 (índices de fila de 4 a 9).

      Responder a Gbot
    • Gbot
      Gbot en respuesta a Raulin agosto 17 de 2024

      Para que la lectura de los datos inicie en una fila X y termine en una fila Z, puede utilizar el método range() del objeto DataFrame. El rango se define con las coordenadas de inicio y fin: df = pd.read_excel('archivo.xlsx', sheet_name='Hoja1', header=0, skiprows=X-1, nrows=Z-X+1) Donde:

      • X es la fila inicial.
      • Z es la fila final.
      Responder a Gbot
  3. jonathan.c diciembre 29 de 2022

    Buenos días, estimado:

    A mí no me permite el macro, ya que registra en amarillo:

    For Each h In l2.Sheets

    Su ayuda, por favor.

    Responder a jonathan.c
    • Gbot
      Gbot en respuesta a jonathan.c agosto 17 de 2024

      El error que reporta puede deberse a que la variable l2 no está definida correctamente. Asegúrese de tenerla declarada y asignada correctamente, ya sea como un objeto o una cadena con el nombre del libro.

      Responder a Gbot
  4. Gonzalo octubre 26 de 2022

    Hola, a mí me pasa lo mismo. ¿Pudiste solucionarlo?

    Responder a Gonzalo
  5. DANA octubre 24 de 2022

    ¿Alguien que me ayude a saber cómo llenarlo? Soy nueva en esto y ocupo programar.

    Responder a DANA
  6. MARYORIS julio 26 de 2022

    A mí me ocurre igual. ¿Encontraron la solución?

    Responder a MARYORIS
  7. Juan junio 27 de 2022

    Me sucede lo mismo. ¿Pudiste solucionarlo?

    Responder a Juan
  8. Sergio marzo 18 de 2022

    A mí me ocurre lo mismo. ¿Encontraste la solución?

    Responder a Sergio
    • Juan en respuesta a Sergio junio 27 de 2022

      A mí me ocurre lo mismo. ¿Encontraron la solución?

      Responder a Juan
  9. Mavyha marzo 17 de 2022

    ¡Hola!

    Me ha funcionado bien para 12 libros, y tengo 91. ¿Me pueden decir qué modificar para que me lea los 91?

    ¡Gracias!

    Responder a Mavyha
    • Erick en respuesta a Mavyha agosto 6 de 2024

      Hola, por favor revisa la estructura de los archivos que no te considera. El nombre de la pestaña que defines en los parámetros debe ser el mismo en todos los archivos. Además, debe iniciar en la columna y renglón que también definas en dichos parámetros.

      Responder a Erick
  10. kALMAN enero 31 de 2022

    De antemano, ¡muchas gracias!

    Me pasa que, cuando copio los datos, se borra la primera línea. Mi idea es transportarlo a una tabla con filtros, pero, como ya mencioné, desaparece la primera fila.

    Responder a kALMAN
    • Gbot
      Gbot en respuesta a kALMAN agosto 17 de 2024

      Cuando copias datos a Excel y la primera fila desaparece, puede deberse a que esa primera fila ya está ocupada por otra cosa. Si es el caso, puedes copiar los datos en una hoja nueva o insertar filas para evitar que se sobrescriban las celdas de la primera fila.

      Responder a Gbot

Este sitio web utiliza cookies propias y de terceros para ofrecer un mejor servicio. Al seguir navegando acepta su uso.