Come dividere un foglio Excel in più file separati in modo semplice e veloce
Dividere un file Excel in più fogli o più file separati è un’esigenza comune per chi lavora con grandi quantità di dati. Spesso si ha la necessità di suddividere un foglio Excel contenente molte righe in più file più piccoli, magari mantenendo le intestazioni di colonna originali. Questa operazione è particolarmente utile per:
✅ Gestione di listini prezzi
✅ Preparazione di file per importazioni di dati
✅ Organizzazione di report e analisi
Strumenti per dividere un file Excel
Cercando su Google, si trovano numerosi strumenti e software per dividere file Excel, tra cui:
🔹 Utility specifiche per lo split di file Excel
🔹 Macro VBA per Excel personalizzate
🔹 Programmi di terze parti che offrono questa funzionalità
Tuttavia, molti di questi strumenti sono a pagamento o richiedono installazioni aggiuntive. La soluzione più efficiente e gratuita è creare una macro VBA personalizzata, che consente di automatizzare il processo direttamente in Excel.
Come creare una Macro VBA per dividere un file Excel
Ho trovato un buon esempio su questo forum, che ho migliorato per:
✔️ Gestire file con estensione .xlsx
✔️ Chiedere il file di input con il comando GetOpenFilename
, basato sulla documentazione ufficiale Microsoft
Dividere un foglio di excel in più file separati
Per semplificare il lavoro, ho preparato un file Excel con la macro già creata e pronta all’uso. In alternativa, è possibile creare la macro manualmente seguendo questi passaggi:
1️⃣ Aprire Excel (funziona su tutte le versioni, anche se i menu possono variare leggermente).
2️⃣ Andare su Menù VISUALIZZA → MACRO → Visualizza Macro.
3️⃣ Creare una nuova macro e incollare il codice VBA.
4️⃣ Eseguire la macro per dividere automaticamente il file Excel.
Da Excel (2007 nel mio caso ma dovrebbe funzionare anche per le altre versioni, magari cambia solo la posizione del menù e forse qualche sintassi): Menù VISUALIZZA -> MACRO -> Visualizza Macro
Digitiamo il nome che vogliamo assegnare alla macro e clicchiamo CREA
Incolliamo il codice qui di seguito:
Public Sub separa_5000_righe_con_intestazioni_colonna() Dim inputFile As String, inputWb As Workbook Dim lastRow As Long, row As Long, n As Long Dim newCSV As Workbook inputFile = Application.GetOpenFilename("Excel Files (*.xlsx), *.xlsx") Set inputWb = Workbooks.Open(inputFile) With inputWb.Worksheets(1) lastRow = .Cells(Rows.Count, "A").End(xlUp).row Set newCSV = Workbooks.Add n = 0 For row = 2 To lastRow Step 5000 n = n + 1 .Rows(1).EntireRow.Copy newCSV.Worksheets(1).Range("A1") .Rows(row & ":" & row + 5000 - 1).EntireRow.Copy newCSV.Worksheets(1).Range("A2") 'Save in same folder as input workbook with .xlsx replaced by (n).csv newCSV.SaveAs Filename:=Replace(inputWb.FullName, ".xlsx", "(" & n & ").csv"), FileFormat:=xlCSV, CreateBackup:=False Next End With newCSV.Close saveChanges:=False inputWb.Close saveChanges:=False End Sub
In questo caso separiamo ogni 5000 righe e creiamo dei file CSV nella stessa cartella di provenienza del file.
Possiamo modificare questo comportamento impostando, ad esempio, un numero diverso di righe in tutti i punti dove compare 5000 nel codice.
Ho preparato il file scaricabile, lo zip contiene un semplice file excel con la macro già creata.
Naturalmente per poter eseguire la macro bisognerà attivare le macro di excel cliccando sul pulsante Opzioni che compare automaticamente:
Dopodichè sarà sufficiente dal Menù VISUALIZZA -> Macro -> Visualizza Macro:
Selezionare la macro, cliccare esegui e selezionare il file da dividere.
Conclusione
Utilizzare una macro VBA per dividere un file Excel è il metodo più pratico, veloce e gratuito per gestire grandi quantità di dati senza dover installare software aggiuntivi.
Come salvare i file divisi in .xlsx e non .cvs?
Grazie mille