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