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

  1. Apri Visual Basic Editor (assicurati di abilitare la scheda Sviluppatore se la hai già sulla barra multifunzione).
    open the visual basic editor
  2. Successivamente, individua la cartella di lavoro corrente dalla finestra del progetto (control + r) e inserisci un nuovo modulo al suo interno.
    locate the current workbook
  3. Avrai una finestra del codice nel modulo (fai doppio clic su di essa) in cui dovrai incollare il codice che hai (così com’è).
    code window in the module
  4. 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.
    change the value for the path variable
  5. Alla fine, esegui il codice e otterrai tutti i fogli di lavoro nella cartella di lavoro nel file corrente.

Link utili: Esegui una macroRegistratore di macroVisual Basic EditorManuale 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.

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *