TOP

Raccolta di fogli di lavoro

Descrizione

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 di 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 raccogliere fogli di lavoro da tutte le cartelle di lavoro 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.


Codice VBA per la 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()
    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 di codice nella nostra macro.

Articoli sull'argomento: