Dividere un foglio di excel in più file separati
E’ molto frequente l’esigenza di separare un file excel contenente molte righe in più file separati, magari mantenendo le intestazioni di colonna originali.
Utile per Listin prezzi, importazioni di dati e similari.
Cercando su Google si trovano molti file ‘splitter’, spesso utility a se stanti o macro per Excel.
A conti fatti la soluzione migliore sembra creare una semplice Macro VBA di Excel.
Ho trovato un buon esempio su questo forum che ho solo integrato per prendere i file con estensione xlsx e fatto in modo che chiedesse il file di input con il comando GetOpenFilename dalla documentazione ufficiale Microsoft.
Ho preparato anche un file scaricabile contenente la macro già creata, diversamente i passaggi per crearla sul proprio file excel sono abbastanza semplici:
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.
Come salvare i file divisi in .xlsx e non .cvs?
Grazie mille