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 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 hacer colección de 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

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

Sub CombineWorkbooks()
    'moonexcel.com.ua
    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, puedes 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 del código de nuestra macro.

Artículos sobre el tema: