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