Come combinare più cartelle di lavoro excel utilizzando vba?
Per combinare più cartelle di lavoro di Excel, è necessario utilizzare del codice che consenta di scegliere quali file si desidera combinare oppure è possibile fare riferimento a un percorso particolare e combinare tutti i file di Excel nella cartella di lavoro corrente.
VBA combina più cartelle di lavoro
Puoi utilizzare il seguente codice che utilizza la posizione che ho menzionato nella variabile path (una cartella sul desktop del mio sistema).
Dim Path As String Dim Filename As String Dim Sheet As Worksheet Path = "C:UsersDellDesktopsample-data" Filename = Dir(Path & "*.xlsx") Do While Filename <> "" Workbooks.Open Filename:=Path & Filename, ReadOnly:=True For Each Sheet In ActiveWorkbook.Sheets Sheet.Copy After:=ThisWorkbook.Sheets(1) Next Sheet Workbooks(Filename).Close Filename = Dir() Loop
Passaggi per combinare file Excel utilizzando VBA
- Apri Visual Basic Editor (assicurati di abilitare la scheda Sviluppatore se la hai già sulla barra multifunzione).
- Successivamente, individua la cartella di lavoro corrente dalla finestra del progetto (control + r) e inserisci un nuovo modulo al suo interno.
- Avrai una finestra del codice nel modulo (fai doppio clic su di essa) in cui dovrai incollare il codice che hai (così com’è).
- Da qui, devi modificare il valore della variabile percorso con il percorso della cartella in cui si trovano tutti i file Excel che desideri combinare.
- Alla fine, esegui il codice e otterrai tutti i fogli di lavoro nella cartella di lavoro nel file corrente.
Link utili: Esegui una macro – Registratore di macro – Visual Basic Editor – Manuale delle macro personali
Questo codice apre ogni file uno per uno e copia ogni foglio di lavoro uno per uno e lo incolla nel file corrente con lo stesso nome. Ecco lo stesso codice ma con lo schermo che si aggiorna su false all’inizio per eseguire tutto nel backend.
Dim Path As String Dim Filename As String Dim Sheet As Worksheet Application.ScreenUpdating = False Path = "C:UsersDellDesktopsample-data" Filename = Dir(Path & "*.xlsx") Do While Filename <> "" Workbooks.Open Filename:=Path & Filename, ReadOnly:=True For Each Sheet In ActiveWorkbook.Sheets Sheet.Copy After:=ThisWorkbook.Sheets(1) Next Sheet Workbooks(Filename).Close Filename = Dir() Loop Application.ScreenUpdating = True End Sub
Nota: se vuoi imparare come combinare i dati di più cartelle di lavoro in un’unica tabella, assicurati di consultare questa guida.