Combina varios ficheros XLSx en uno.

Instrucciones para combinar todas las hojas de múltiples archivos Excel

Pasos para configurar y ejecutar la macro

  1. Abre Microsoft Excel.
  2. Presiona Alt + F11 para abrir el editor de VBA.
  3. En el editor de VBA, haz clic en Insertar > Módulo.
  4. Copia y pega el siguiente código en el módulo:
  5. 
    Sub CombinarHojasDeArchivos()
        Dim RutaCarpeta As String
        Dim Archivo As String
        Dim LibroOrigen As Workbook
        Dim LibroDestino As Workbook
        Dim Hoja As Worksheet
        Dim NombreHoja As String
        Dim NuevoNombreHoja As String
        Dim Contador As Integer
    
        ' Definir la carpeta donde están los archivos
        RutaCarpeta = "D:\bbb\"
        If Right(RutaCarpeta, 1) <> "\" Then RutaCarpeta = RutaCarpeta & "\"
        
        ' Crear un nuevo libro para combinar
        Set LibroDestino = Workbooks.Add
        
        ' Iterar sobre todos los archivos .xlsx en la carpeta
        Archivo = Dir(RutaCarpeta & "*.xlsx")
        Do While Archivo <> ""
            ' Abrir cada archivo
            Set LibroOrigen = Workbooks.Open(RutaCarpeta & Archivo)
            
            ' Copiar cada hoja al libro destino
            For Each Hoja In LibroOrigen.Sheets
                Hoja.Copy After:=LibroDestino.Sheets(LibroDestino.Sheets.Count)
                
                ' Usar el nombre original de la hoja
                NombreHoja = Hoja.Name
                NuevoNombreHoja = NombreHoja
                Contador = 1
                
                ' Verificar si ya existe una hoja con el mismo nombre en el libro destino
                Do While HojaExiste(LibroDestino, NuevoNombreHoja)
                    NuevoNombreHoja = Left(NombreHoja, 28) & "_" & Contador
                    Contador = Contador + 1
                Loop
                
                ' Renombrar la hoja
                LibroDestino.Sheets(LibroDestino.Sheets.Count).Name = NuevoNombreHoja
            Next Hoja
            
            ' Cerrar el archivo origen
            LibroOrigen.Close False
            Archivo = Dir
        Loop
        
        ' Guardar el archivo combinado
        On Error Resume Next
        LibroDestino.SaveAs RutaCarpeta & "_juntos-Rostov.xlsx"
        MsgBox "Archivos combinados exitosamente en: " & RutaCarpeta & "_juntos-Rostov.xlsx"
    End Sub
    
    Function HojaExiste(Libro As Workbook, Nombre As String) As Boolean
        Dim Hoja As Worksheet
        On Error Resume Next
        Set Hoja = Libro.Sheets(Nombre)
        HojaExiste = Not Hoja Is Nothing
        On Error GoTo 0
    End Function
            
  6. Presiona Alt + Q para cerrar el editor de VBA y regresar a Excel.
  7. Presiona Alt + F8 para abrir la ventana de macros.
  8. Selecciona la macro llamada CombinarHojasDeArchivos y haz clic en Ejecutar.

Resultado esperado

Notas





Última modificación: