Hace tiempo escribí sobre el método de Excel GetOpenFilename para abrir archivos desde Excel a través del explorador de archivos; ahora le damos una nueva vuelta de tuerca a aquella entrada y, de forma simple, podemos abrir múltiples libros de Excel que, además, se añadirán de forma sucesiva en un nuevo libro. En este enlace podéis descargaros el archivo y, como veréis, no tiene nada. Un botón “Abrir Excel” realiza el proceso: se abre el explorador de Windows y podéis seleccionar múltiples archivos Excel que se almacenan en un array. La macro a ejecutar es la siguiente:

Sub abre_libros()
    Dim Hoja As Object
    Dim libros As Variant
    Dim libro_actual As String, libro_nuevo As String
    Dim i As Long

    ' Ventana con archivos
    libros = Application.GetOpenFilename _
        ("Archivos Excel (*.xls*), *.xls*", 2, "Abrir archivos", , True)
    
    ' Es necesario seleccionar archivos
    If IsArray(libros) Then
        ' Creamos un libro nuevo
        Workbooks.Add
        libro_actual = ActiveWorkbook.Name
        
        ' Ahora pegamos las hojas
        For i = LBound(libros) To UBound(libros)
            Workbooks.Open libros(i)
            libro_nuevo = ActiveWorkbook.Name
            
            For Each Hoja In ActiveWorkbook.Sheets
                Hoja.Copy after:=Workbooks(libro_actual).Sheets(Workbooks(libro_actual).Sheets.Count)
            Next Hoja
            
            Workbooks(libro_nuevo).Close SaveChanges:=False
        Next i
    End If
End Sub

No se me ocurrió cómo hacer el código más sencillo y, al final, lo que hace es recorrer el array de libros que abre y añadir las hojas sobre un libro nuevo. Tiene algunas limitaciones en la forma en la que pega las nuevas hojas, pero nada que pueda ser muy complicado de solucionar. Ahora tenéis que mejorar la entrada más visitada de este blog para que pueda unir en uno los Excel que se abren. Saludos.