TOP

Colección de hojas de trabajo

Descripción

A veces necesitamos combinar hojas de diferentes libros de Excel para crear un nuevo informe o un archivo de datos consolidado. Esta operación se puede realizar manualmente, utilizando herramientas estándar de MS Excel, pero puede requerir mucho tiempo y esfuerzo. Consideremos cómo podemos automatizar este proceso y acelerar el trabajo con informes.

Por ejemplo, tenemos muchos libros de trabajo Excel y queremos recopilar hojas de trabajo de todos los libros en un solo archivo. Para hacer esto, abra el libro donde desea recopilar todas las hojas y agregue el siguiente código de macro.


VBA código para la macro

En el libro abierto Excel donde desea recopilar todas las hojas, abra Visual Basic Editor (Alt+F11), agregue el módulo VBA (Insert - Module) y copie esta macro de código allí:

Sub CombineWorkbooks()
    Dim FilesToOpen
    Dim x As Integer
    
    On Error GoTo ErrHandler
    Application.ScreenUpdating = False
    
    FilesToOpen = Application.GetOpenFilename _
                  (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _
                   MultiSelect:=True, Title:="Files to Merge")
                   
    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "¡No se seleccionó ningún archivo!"
        GoTo ExitHandler
    End If
    
    x = 1
    While x <= UBound(FilesToOpen)
        Workbooks.Open Filename:=FilesToOpen(x)
        Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
        x = x + 1
    Wend
    
    ExitHandler:
    Application.ScreenUpdating = True
    Exit Sub
    
    ErrHandler:
    MsgBox Err.Description
    Resume ExitHandler
    
End Sub

Después de eso, puede regresar a Excel y ejecutar nuestra macro a través del menú Tools - Macro - Macros (Alt+F8). Aparecerá un cuadro de diálogo, donde deberá seleccionar uno o más (manteniendo presionada la tecla Ctrl) archivos, cuyas hojas queremos agregar al libro de trabajo actual.

Si utiliza una extensión de archivo Excel diferente (por ejemplo, *.xlsx, *.xlsm, *.xlsb, etc.), deberá realizar los cambios apropiados en la novena línea de código de nuestra macro.

Artículos sobre el tema:

  • Ordenar hojas de trabajo en un libro
  • Cambio rápido entre hojas de trabajo