Consolidar información de varias hojas de varios libros en uno solo, con macro

Tengo yun libro de excel con 2 hojas, una llamada "Personal" y la otra llamada "Resumen".

Lo que deseo es distribuir ese libro a más de 10 oficinas y en cada oficina, lo que van a hacer es llenar las columnas con información.

Una vez tenga yo esos más de 10 libros, no quiero poner uno por uno a consolidarlo en 1 solo, lo quiero hacer automáticamente.

La hoja llamada "Personal", su información, debe ser copiada en su totalidad, desde A1 hasta la columna "O" y pues obviamente hasta la últina fila ocupada.

En la hoja "Resumen", pues también debe ser consolidada en una hoja con el mismo Nombre, es descir; resumen, pero solo se debe copiar y pegar la información de las columnas B, C, DE, E, F J, M, N, P, ES, T, V, AA, AB.

2 Respuestas

Respuesta
1

De la hoja resumen ¿hay más datos en las columnas que no nombras? O uno podría simplemente copiar todos los datos de la hoja desde "A" hasta la columna "ES", para luego pegarlos en el libro donde vas a unir todo.

Hola Federico, si en las columnas que no nombro, hay unas fórmulas y funciones que van a hacer unos cálculos en base a los datos que serán pegados en las columnas que sí relaciono. Aquí en este link, hay una forma de como deseo hacer la primera parte.

https://excelsignum.com/2017/03/28/agrupar-informacion-de-varios-libros-en-una-hoja-excel/ 

Esta es la hoja "Resumen", que es la segunda parte de lo que deseo hacer.

Los datos en el origen están en unas tablas dinámicas y el en destino, también irán a parar en una tabla dinámica. Los datos copiados, deben conservar su formato original.

Luis, no soy el mejor en esto, pero quiero aprovechar el tiempo libre para devolverle a todoexpertos, todo lo que me dio ja.!

Así que bueno, esto es lo que me salió. Dato importante, poner todos los archivos en una carpeta y esa dirección reemplazarla por "". Otra cosa importante es que tu libro final donde van a ir a parar todos los datos, no lo pongas en la misma carpeta.

Sub unirarchivos()
carpeta = "D:\Escritorio\Nueva carpeta\Nueva carpeta"
Dim Libros As Workbook
Dim Unir As Object, direccion As Object, archivos As Object, TodosLibros As Object
Application.ScreenUpdating = False
Set Unir = CreateObject("Scripting.FileSystemObject")
Set direccion = Unir.Getfolder(carpeta)
Set archivos = direccion.Files
For Each TodosLibros In archivos
Set Libros = Workbooks.Open(TodosLibros)
Sheets("personal").Select
Range("A2:O" & Range("A1048576").End(xlUp).Row).Copy
ThisWorkbook.Activate
Sheets("Personal").Select
Range("A1048576").End(xlUp).Offset(1, 0).PasteSpecial
Libros.Activate: Sheets("Resumen").Select
Range("B2", Range("F1048576").End(xlUp)).Copy
ThisWorkbook.Activate: Sheets("Resumen").Select
Range("B1048576").End(xlUp).Offset(1, 0).PasteSpecial
Libros.Activate: Sheets("Resumen").Select
Range("J2", Range("J1048576").End(xlUp)).Copy
ThisWorkbook.Activate: Sheets("Resumen").Select
Range("J1048576").End(xlUp).Offset(1, 0).PasteSpecial
Libros.Activate: Sheets("Resumen").Select
Range("M2", Range("N1048576").End(xlUp)).Copy
ThisWorkbook.Activate: Sheets("Resumen").Select
Range("M1048576").End(xlUp).Offset(1, 0).PasteSpecial
Libros.Activate: Sheets("Resumen").Select
Range("P2", Range("P1048576").End(xlUp)).Copy
ThisWorkbook.Activate: Sheets("Resumen").Select
Range("P1048576").End(xlUp).Offset(1, 0).PasteSpecial
Libros.Activate: Sheets("Resumen").Select
Range("S2", Range("T1048576").End(xlUp)).Copy
ThisWorkbook.Activate: Sheets("Resumen").Select
Range("S1048576").End(xlUp).Offset(1, 0).PasteSpecial
Libros.Activate: Sheets("Resumen").Select
Range("V2", Range("V1048576").End(xlUp)).Copy
ThisWorkbook.Activate: Sheets("Resumen").Select
Range("V1048576").End(xlUp).Offset(1, 0).PasteSpecial
Libros.Activate: Sheets("Resumen").Select
Range("AA2", Range("AB1048576").End(xlUp)).Copy
ThisWorkbook.Activate: Sheets("Resumen").Select
Range("AA1048576").End(xlUp).Offset(1, 0).PasteSpecial
Application.CutCopyMode = False
Libros.Close
Next
Application.ScreenUpdating = True
End Sub

El 80% de las macros que aprendi o que uso son de Dante Amor, así que en gran parte esto es gracias a el.

Así que bueno, esto es lo que me salió. Dato importante, poner todos los archivos en una carpeta y esa dirección reemplazarla por:

"D:\Escritorio\Nueva carpeta\Nueva carpeta"

¡Gracias! 

He realizado el procedimiento, pero me sale un error y dice así:Error compilación, No se puede encontrar el proyecto o la biblioteca.

Me resalta en amarillo la palabra "carpeta" y hasta ahí llega.

Genera múltiples errores, ya que no está definido de donde y cuales son los archivos que debe consolidar.

Como te comenté más arriba, luego de 'carpeta =' coloca la dirección en donde están tus archivos entre comillas

Ya lo hice, el problema radica en que no reconoce "carpeta" como algo, como un tipo de dato, una ruta, ubicación o algo por el estilo, para VBA "carpeta", así como está, no representa nada. no se si tal vez se pueda usar thisworkbook.Path o algo así:  Dim carpeta as Ruta o no se.

Probemos eliminando la línea completa y aquí:

Set direccion = Unir.Getfolder(carpeta)

Pon la dirección entre comillas en lugar de carpeta.

Me sigue arrojando el mismo error: no se puede encontrar el proyecto o la biblioteca.

Perdón por la demora, por lo que tuve investigando puede ser que te falten algunas herramientas del vba, pero hasta acá llegaron mis conocimientos. Lo lamento mucho, tal vez otro pueda ayudar.

Respuesta
1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas