A volte è necessario combinare fogli di diverse cartelle di lavoro di Excel per creare un nuovo report o file di dati consolidati. Tale operazione può essere eseguita manualmente, utilizzando gli strumenti standard MS Excel, ma può richiedere molto tempo e impegno. Consideriamo come automatizzare questo processo e accelerare il lavoro con i report.
Ad esempio, abbiamo molte cartelle di lavoro Excel e vogliamo creare raccolta di fogli di lavoro da tutti i libri in un unico file. Per fare ciò, apri la cartella di lavoro in cui desideri raccogliere tutti i fogli e aggiungi il seguente codice macro.
Con la cartella di lavoro Excel aperta, dove vuoi raccogliere tutti i fogli, apri Visual Basic Editor (Alt+F11), inserisci il modulo VBA ( Insert - Module ) e copia lì questo codice macro:
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 " Nessun file è stato selezionato! "
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
Successivamente, puoi tornare a Excel ed eseguire la nostra macro tramite il menu Tools - Macro - Macros (Alt+F8) . Apparirà una finestra di dialogo in cui è necessario selezionare uno o più file (tenendo premuto Ctrl), i cui fogli vogliamo aggiungere alla cartella di lavoro corrente.
Se utilizzi un'estensione di file Excel diversa (ad esempio, *.xlsx, *.xlsm, *.xlsb, ecc.), dovrai apportare le modifiche appropriate alla nona riga del codice della nostra macro.