Macro para Consolidar Datos de Múltiples Archivos Excel en una Hoja

¿Tienes múltiples archivos Excel con datos dispersos y necesitas consolidarlos en una sola hoja? Esta Macro para Consolidar Datos de Múltiples Archivos Excel automatiza todo el proceso, ahorrándote horas de trabajo manual. Con solo configurar algunos parámetros, podrás unir todos los datos de varias hojas y archivos en una hoja consolidada llamada "Consolidado". Además, es completamente personalizable: puedes definir la carpeta donde están los archivos, el rango de columnas a copiar y si deseas incluir encabezados.
En este artículo, te explicaremos paso a paso cómo implementar esta macro, proporcionaremos el código completo y archivo. además de ofrecerte consejos prácticos para que obtengas los mejores resultados.
- Beneficios de Usar esta Macro para Consolidar Datos de Múltiples Archivos Excel
- Cómo Funciona la Macro para consolidar datos de archivos Excel realizada por nosotros
- Resumen de Validaciones de errores al ingresar datos.
- Código VBA MACRO para Consolidar Datos de Múltiples Archivos Excel
- Descargar Macro para Consolidar Datos de Múltiples Archivos Excel a uno
- Preguntas Frecuentes (FAQ)
- Conclusión
Beneficios de Usar esta Macro para Consolidar Datos de Múltiples Archivos Excel
Antes de profundizar en los detalles, aquí tienes algunas razones por las que esta macro será tu mejor alternativa para unir diferentes archivos Excel de varias hojas en uno solo. Además lo mas importante realiza la tarea en solo unos segundos:
- Ahorra tiempo: Automatiza tareas repetitivas y tediosas en solo segundos.
- Personalización total: Define la ruta de los archivos, el rango de columnas y si va incluir encabezados.
- Funciona con múltiples hojas: Consolida datos de todas las hojas de cada archivo.
- Compatible con diferentes formatos: Procesa archivos .xls y .xlsx.
- Fácil de usar: Solo necesitas configurar unos pocos parámetros para empezar.
- Validaciones de errores: Si se ingresa mal uno de los datos personalizados, lo indicara para su corrección.
- Optimizada: realizada para obtener y copiar datos de manera rápida sin ocupar portapapeles.
Cómo Funciona la Macro para consolidar datos de archivos Excel realizada por nosotros
La macro para unir varios archivos Excel en un consolidado recorre todos los archivos Excel de una carpeta especifica, copia los datos de todas las hojas de las columnas especificadas y los consolida en una sola hoja llamada "Consolidado" desde la columna B en adelante de nuestro archivo.
También puedes leer
Como cada persona tiene sus archivos en diferentes carpetas (Ubicaciones), además cuentan con diferentes necesidades de copiar diferentes columnas de acuerdo a cada requerimiento, con encabezado o sin encabezado hemos creado esta macro personalizable para que lea los parámetros definidos en la hoja "Datos Macro" de nuestro Archivo Excel Macro que tiene los siguientes campos a ingresar:
- Ruta de la carpeta (celda B4): Indica la ubicación de la carpeta donde están los archivos Excel. (ejemplo: "D:\Varios Excel")
- Rango de columnas (celda B6): Se debe especificar qué columnas deseas copiar de los archivos. (ejemplo: "A:D").
- Encabezados (celda B8): Indica si los archivos tienen encabezados (ejemplo: "SI" o "NO").

Luego de tener los datos correctos ingresados puede ejecutar el Botón "Unir Archivos a Consolidado" si esta correcto mostrará el mensaje de "Consolidación completada con éxito!"
Resultados de unir hojas de varios Excel en un consolidado.
Resultado con encabezados (SI). En los archivos Excel a unir deben contar con encabezados.

Resultado sin encabezados (NO). En los archivos Excel a unir No tienen encabezados.
También puedes leer

Resumen de Validaciones de errores al ingresar datos.
Validación | Acción |
---|---|
Campos vacíos en celdas (B4, B6, B8) | Mensaje de error y detiene macro. |
Valor inválido en B8 valor diferente a SI o NO | Limpia "Consolidado", muestra error y detiene macro. |
Ruta sin archivos Excel | Mensaje de error y detiene macro. |
celda B6 Columna de referencia vacía | Limpia "Consolidado", muestra error y detiene macro. |
Código VBA MACRO para Consolidar Datos de Múltiples Archivos Excel
Sub UnirVariosArchivosExcelEnUnConsolidado()
Dim wsDatos As Worksheet, wsConsolidado As Worksheet
Dim rutaCarpeta As String, rangoColumnas As String, tieneEncabezados As String
Dim archivo As String, wbOrigen As Workbook
Dim wsOrigen As Worksheet, rngDatos As Range
Dim ultimaFila As Long, filaDestino As Long
Dim arrColumnas() As String, colInicio As Long, colFin As Long
Dim primerArchivo As Boolean, titulo As String
Dim datosOrigen() As Variant
titulo = "licsafe.com"
'Configuración inicial para velocidad
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
'Referencias a hojas
Set wsDatos = ThisWorkbook.Sheets("Datos Macro")
Set wsConsolidado = ThisWorkbook.Sheets("Consolidado")
'Validar campos obligatorios
If wsDatos.Range("B4").Value = "" Or wsDatos.Range("B6").Value = "" Or wsDatos.Range("B8").Value = "" Then
MsgBox "Debe completar B4 (Ruta), B6 (Rango) y B8 (Encabezados).", vbExclamation, titulo
GoTo Finalizar
End If
'Validar que B8 sea "SI" o "NO" (case-insensitive)
tieneEncabezados = UCase(Trim(wsDatos.Range("B8").Value))
If tieneEncabezados <> "SI" And tieneEncabezados <> "NO" Then
wsConsolidado.Cells.Clear
MsgBox "El valor en B8 debe ser 'SI' o 'NO'. Proceso detenido.", vbCritical, titulo
GoTo Finalizar
End If
'Obtener parámetros válidos
rutaCarpeta = wsDatos.Range("B4").Value
rangoColumnas = wsDatos.Range("B6").Value
'Validar rango de columnas (Ej: "A:D" -> A=1, D=4)
arrColumnas = Split(rangoColumnas, ":")
colInicio = Columns(arrColumnas(0)).Column
colFin = Columns(arrColumnas(1)).Column
'Validar ruta
If Right(rutaCarpeta, 1) <> "\" Then rutaCarpeta = rutaCarpeta & "\"
archivo = Dir(rutaCarpeta & "*.xls*")
If archivo = "" Then
MsgBox "No se encontraron archivos Excel en la ruta.", vbExclamation, titulo
GoTo Finalizar
End If
'Limpiar hoja Consolidado
wsConsolidado.Cells.Clear
wsConsolidado.Cells.Font.Bold = False
filaDestino = 1
primerArchivo = True
'Procesar cada archivo en la carpeta
Do While archivo <> ""
Set wbOrigen = Workbooks.Open(rutaCarpeta & archivo)
For Each wsOrigen In wbOrigen.Sheets
'Obtener última fila con datos en la columna de referencia
ultimaFila = wsOrigen.Cells(wsOrigen.Rows.Count, colInicio).End(xlUp).Row
'Validar si la columna de referencia tiene datos
If ultimaFila = 1 And wsOrigen.Cells(1, colInicio).Value = "" Then
wsConsolidado.Cells.Clear
MsgBox "La columna '" & arrColumnas(0) & "' no tiene datos en el archivo: " & archivo & vbCrLf & _
"Proceso detenido.", vbCritical, titulo
wbOrigen.Close False
GoTo Finalizar
End If
'Cargar datos del rango origen en un array
If tieneEncabezados = "SI" Then
If primerArchivo Then
'Copiar encabezados + datos
datosOrigen = wsOrigen.Range(wsOrigen.Cells(1, colInicio), wsOrigen.Cells(ultimaFila, colFin)).Value
primerArchivo = False
Else
'Copiar solo datos (omitir encabezados)
datosOrigen = wsOrigen.Range(wsOrigen.Cells(2, colInicio), wsOrigen.Cells(ultimaFila, colFin)).Value
End If
Else
'Copiar todo (sin encabezados)
datosOrigen = wsOrigen.Range(wsOrigen.Cells(1, colInicio), wsOrigen.Cells(ultimaFila, colFin)).Value
End If
'Pegar datos en hoja Consolidado (usando arrays)
With wsConsolidado
If filaDestino = 1 Then
'Primera escritura
.Cells(1, 2).Resize(UBound(datosOrigen, 1), UBound(datosOrigen, 2)).Value = datosOrigen
If tieneEncabezados = "SI" Then
.Range(.Cells(1, 2), .Cells(1, 2 + UBound(datosOrigen, 2) - 1)).Font.Bold = True
End If
filaDestino = filaDestino + UBound(datosOrigen, 1)
Else
'Subsiguientes escrituras
.Cells(filaDestino, 2).Resize(UBound(datosOrigen, 1), UBound(datosOrigen, 2)).Value = datosOrigen
filaDestino = filaDestino + UBound(datosOrigen, 1)
End If
End With
Next wsOrigen
wbOrigen.Close False
archivo = Dir()
Loop
MsgBox "Consolidación completada con éxito!", vbInformation, titulo
Finalizar:
'Restaurar configuración de Excel
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub
Descargar Macro para Consolidar Datos de Múltiples Archivos Excel a uno
Dejo a su disposición mi archivo con el código Excel VBA implementado y completamente funcional para que puedes probar, ejecutar las tareas sin complicaciones.
El archivo Excel macro es creado por mi, solo contiene el código mostrado y es totalmente seguro, libre de virus.
Preguntas Frecuentes (FAQ)
¿Qué pasa si algunos archivos no tienen datos en la columna de referencia?
La macro detendrá el proceso y mostrará un mensaje de error indicando el archivo que no tiene datos, los datos copiados de anteriores archivos son borrados de la hoja consolidado.
¿Funciona con archivos protegidos por contraseña?
No, la macro no puede abrir archivos protegidos. Debes desbloquearlos antes de ejecutarla.
También puedes leer
¿Puedo personalizar el rango de columnas a copiar?
Sí, solo debes modificar el valor en la celda B6 de la hoja "Datos Macro". Solo debes colocar las letras de las columnas que desea ejemplo: "B:F"
Conclusión
Con esta macro VBA, puedes consolidar datos de múltiples archivos Excel en segundos. ¡Descarga el archivo, configura los parámetros y empieza a trabajar ahorrando tiempo hoy mismo!
Deja una respuesta
Te Puede Interesar