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

Macro para consolidar datos de múltiples archivos Excel

¿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.

🔎 Índice de contenidos
  1. Beneficios de Usar esta Macro para Consolidar Datos de Múltiples Archivos Excel
  2. Cómo Funciona la Macro para consolidar datos de archivos Excel realizada por nosotros
    1. Resultados de unir hojas de varios Excel en un consolidado.
  3. Resumen de Validaciones de errores al ingresar datos.
  4. Código VBA MACRO para Consolidar Datos de Múltiples Archivos Excel
  5. Descargar Macro para Consolidar Datos de Múltiples Archivos Excel a uno
  6. Preguntas Frecuentes (FAQ)
    1. ¿Qué pasa si algunos archivos no tienen datos en la columna de referencia?
    2. ¿Funciona con archivos protegidos por contraseña?
    3. ¿Puedo personalizar el rango de columnas a copiar?
  7. 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 leerMacro para Dividir Hojas de Excel en varios ArchivosMacro para Dividir Hojas de Excel en varios Archivos

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").
Al colocar la ruta de la carpeta lo puede hacer por ejemplo 1: D:\Varios Excel\ o ejemplo 2: D:\Varios Excel la macro esta diseñada para agregar la barra invertida al final sino se ingresa. Así mismo los valores de rango de columnas (B6) y encabezados (B8) no importa si se escribe en mayúsculas o minúsculas.
imagen de Macro Consolidar Datos de Múltiples Archivos Excel a uno

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 macro unir excel con encabezados

Resultado sin encabezados (NO). En los archivos Excel a unir No tienen encabezados.

También puedes leerGenerador-de-licencias-eset-nod32Generador de Licencias Eset Nod32 Gratis
Resultado macro unir excel sin encabezados

Resumen de Validaciones de errores al ingresar datos.

ValidaciónAcció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 NOLimpia "Consolidado", muestra error y detiene macro.
Ruta sin archivos ExcelMensaje de error y detiene macro.
celda B6 Columna de referencia vacíaLimpia "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 leerGenerador de licencias Eset Smart PremiumGenerador de licencias ESET Smart Security Premium 2025

¿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!

Te Puede Interesar

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir