Dividi ogni foglio Excel in file separati (passo dopo passo)

Guarda il video - Come dividere ogni foglio Excel in file separati

Se disponi di una cartella di lavoro Excel con molti fogli di lavoro, non esiste un modo semplice per dividere ciascuno di questi fogli in file Excel separati e salvarli separatamente.

Ciò potrebbe essere necessario quando si creano fogli per diversi mesi o regioni o prodotti/clienti e si desidera ottenere rapidamente una cartella di lavoro separata per ciascun foglio (come file Excel o PDF).

Sebbene esista un modo manuale per dividere i fogli in cartelle di lavoro separate e quindi salvarli, è inefficiente e soggetto a errori.

In questo tutorial, ti fornirò un semplice codice VBA che puoi utilizzare per dividere rapidamente (in pochi secondi) tutti i fogli di lavoro in file separati e quindi salvarli in qualsiasi cartella specificata.

Dividi ogni foglio di lavoro in un file Excel separato

Supponiamo di avere una cartella di lavoro come mostrato di seguito dove hai un foglio di lavoro per ogni mese.

Per dividere questi fogli in un file Excel separato, puoi utilizzare il codice VBA seguente:

'Codice creato da Sumit Bansal da trumpexcel.com Sub SplitEachWorksheet() Dim FPath As String FPath = Application.ActiveWorkbook.Path Application.ScreenUpdating = False Application.DisplayAlerts = False For Each ws In ThisWorkbook.Sheets ws.Copy Application.ActiveWorkbook.SaveAs Filename:=FPath & "\" & ws.Name & ".xlsx" Application.ActiveWorkbook.Close False Next Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub

Ci sono alcune cose che devi assicurarti prima di utilizzare il codice VBA sopra:

  1. Crea una cartella in cui vuoi ottenere tutti i file risultanti.
  2. Salva il file Excel principale (che contiene tutti i fogli di lavoro che desideri come file separati) in questa cartella.

Dopo averlo fatto, puoi inserire il codice VBA sopra nel file ed eseguire il codice.

Il codice sopra è scritto in modo da rilevare la posizione della cartella utilizzando il percorso del file (in cui viene eseguito il codice). Ecco perché è importante salvare prima il file nella cartella e poi utilizzare questo codice.

Come funziona il codice VBA? - Il codice sopra utilizza un semplice ciclo For Next che attraversa ogni foglio di lavoro, crea una copia del foglio di lavoro in una cartella di lavoro di Excel e quindi salva questa cartella di lavoro di Excel nella cartella specificata (che è la stessa che ha il file principale con tutti i fogli).

Di seguito sono riportati i passaggi per inserire questo codice VBA nella cartella di lavoro di Excel (saranno gli stessi per tutti gli altri metodi mostrati in questo tutorial):

Dove mettere questo codice?

Di seguito sono riportati i passaggi per inserire il codice nell'editor di Visual Basic dove può essere eseguito:

  • Fare clic sulla scheda Sviluppatore.
  • Nel gruppo Codice, fare clic sull'opzione Visual Basic. Questo aprirà l'editor VB. [Puoi anche usare la scorciatoia da tastiera - ALT + F11]
  • Nell'editor VB, fai clic con il pulsante destro del mouse su uno qualsiasi degli oggetti della cartella di lavoro su cui stai lavorando.
  • Passa il cursore sull'opzione Inserisci
  • Fare clic su Modulo. Questo inserirà un nuovo modulo
  • Fare doppio clic sull'oggetto Modulo. questo aprirà la finestra del codice per il modulo
  • Copia il codice VBA fornito sopra e incollalo nella finestra del codice del modulo.
  • Seleziona qualsiasi riga nel codice e fai clic sul pulsante verde di riproduzione nella barra degli strumenti per eseguire il codice macro VBA.

I passaggi precedenti dividerebbero istantaneamente i fogli di lavoro in file Excel separati e li salverebbero. Ci vuole solo un secondo se hai meno fogli di lavoro. Nel caso in cui tu abbia molto, potrebbe volerci del tempo.

Il nome di ogni file salvato è lo stesso del nome del foglio che aveva nel file principale.

Poiché hai inserito un codice VBA nella cartella di lavoro di Excel, devi salvarlo con un formato .XLSM (che è il formato abilitato per le macro). Ciò garantirà che la macro venga salvata e funzioni quando aprirai questo file in seguito.

Nota che ho usato le linee Application.ScreenUpdating = False e Application.DisplayAlerts = False nel codice in modo che tutto accada nel backend e non veda cose che accadono sullo schermo. Una volta che il codice viene eseguito, divide i fogli e li salva, li riportiamo a TRUE.

Come best practice, si consiglia di creare una copia di backup del file principale (che contiene i fogli che si desidera dividere). Ciò ti assicurerà di non perdere i tuoi dati nel caso in cui qualcosa vada storto o se Excel decide di rallentare o bloccarsi.

Dividi ogni foglio di lavoro e salva come PDF separato

Nel caso in cui desideri dividere i fogli di lavoro e salvarli come file PDF anziché come file Excel, puoi utilizzare il codice seguente:

'Codice creato da Sumit Bansal da trumpexcel.com Sub SplitEachWorksheet() Dim FPath As String FPath = Application.ActiveWorkbook.Path Application.ScreenUpdating = False Application.DisplayAlerts = False For Each ws In ThisWorkbook.Sheets ws.Copy Application.ActiveSheet.ExportAsFixed Tipo:=xlTypePDF, Filename:=FPath & "\" & ws.Name & ".xlsx" Application.ActiveWorkbook.Close False Next Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub

Cose che devi assicurarti prima di usare questo codice:

  1. Crea una cartella in cui vuoi ottenere tutti i file risultanti.
  2. Salva il file Excel principale (che contiene tutti i fogli di lavoro che desideri come file separati) in questa cartella.

Il codice sopra divide ogni foglio nel file Excel e lo salva come PDF nella stessa cartella in cui hai salvato il file Excel principale.

Dividi solo quei fogli di lavoro che contengono una parola/frase in file Excel separati

Nel caso in cui tu abbia molti fogli in una cartella di lavoro e desideri dividere solo quei fogli che contengono un testo specifico, puoi farlo anche tu.

Ad esempio, supponi di avere un file Excel in cui i dati per più anni e ogni foglio nel file ha il numero dell'anno come prefisso. Qualcosa come mostrato di seguito:

Ora, supponiamo che tu voglia dividere tutti i fogli per il 2021-2022 e salvarli come file Excel separati. Per fare ciò, è necessario controllare in qualche modo il nome di ciascun foglio di lavoro e solo i fogli che hanno il numero 2021-2022 dovrebbero essere divisi e salvati e il resto dovrebbe essere lasciato intatto.

Questo può essere fatto utilizzando il seguente codice macro VBA:

'Codice creato da Sumit Bansal da trumpexcel.com Sub SplitEachWorksheet() Dim FPath As String Dim TexttoFind As String TexttoFind = "2020" FPath = Application.ActiveWorkbook.Path Application.ScreenUpdating = False Application.DisplayAlerts = False For Each ws In ThisWorkbook. Fogli If InStr(1, ws.Name, TexttoFind, vbBinaryCompare) 0 Then ws.Copy Application.ActiveWorkbook.SaveAs Filename:=FPath & "\" & ws.Name & ".xlsx" Application.ActiveWorkbook.Close False End If Next Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub

Nel codice sopra, ho usato una variabile TexttoFind, che è stata assegnata a "2020" all'inizio.

Il codice VBA utilizza quindi il ciclo For Next in VBA per esaminare ciascun foglio di lavoro e quindi controllare il nome di ciascuna funzione INSTR del foglio di lavoro. Questa funzione controlla se il nome del foglio di lavoro contiene o meno la parola 2021-2022. In caso affermativo, restituirà un numero di posizione in cui trova questo testo (che in questo caso è 2021-2022).

E se non trova il testo che stiamo cercando, restituisce 0.

Viene utilizzato con la condizione IF Then. Quindi, se il nome di un foglio contiene la stringa di testo 2021-2022, verrà diviso e salvato come file separato. E se non ha questa stringa di testo, la condizione IF non sarebbe soddisfatta e non accadrebbe nulla.

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave