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.