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.