Vba: come salvare i fogli come file csv (con esempio)


È possibile utilizzare la seguente sintassi in VBA per salvare ogni foglio di una cartella di lavoro in un file CSV:

 Sub SaveCSV()

Dim Ws As Worksheet
Dim SaveDir As String

Dim CurrentWorkbook As String
Dim CurrentFormat As Long

CurrentWorkbook = ThisWorkbook.FullName
CurrentFormat = ThisWorkbook.FileFormat

'specify directory to save CSV files in
SaveDir = " C:\Users\bobbi\OneDrive\Desktop\ "

'save each sheet to individual CSV file
For Each Ws In Application.ActiveWorkbook.Worksheets
    Ws.SaveAs SaveDir & Ws.Name, xlCSV
Next

Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat
Application.DisplayAlerts = True

End Sub

Questa particolare macro salverà ogni foglio della cartella di lavoro attualmente attiva in un file CSV.

I file CSV verranno salvati nel percorso specificato nella variabile SaveDir .

Nota : la riga Application.DisplayAlerts=False indica a VBA di disabilitare temporaneamente tutti gli avvisi di visualizzazione in Excel durante il salvataggio dei file.

L’esempio seguente mostra come utilizzare questa sintassi nella pratica.

Esempio: salva i fogli come file CSV utilizzando VBA

Supponiamo di avere una cartella di lavoro Excel con due fogli.

Il primo foglio si chiama player_stats e contiene statistiche su diversi giocatori di basket:

Il secondo foglio si chiama team_info e contiene informazioni su diverse squadre di basket:

Diciamo che vogliamo salvare ciascuno di questi fogli come singoli file CSV sul desktop del nostro computer.

Per fare ciò possiamo creare la seguente macro:

 Sub SaveCSV()

Dim Ws As Worksheet
Dim SaveDir As String

Dim CurrentWorkbook As String
Dim CurrentFormat As Long

CurrentWorkbook = ThisWorkbook.FullName
CurrentFormat = ThisWorkbook.FileFormat

'specify directory to save CSV files in
SaveDir = " C:\Users\bobbi\OneDrive\Desktop\ "

'save each sheet to individual CSV file
For Each Ws In Application.ActiveWorkbook.Worksheets
    Ws.SaveAs SaveDir & Ws.Name, xlCSV
Next

Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat
Application.DisplayAlerts = True

End Sub

Una volta eseguita questa macro, ogni foglio verrà salvato come file CSV sul nostro desktop.

Se accedo al desktop del mio computer, posso vedere ciascuno di questi singoli file CSV con nomi di file che corrispondono ai nomi dei fogli:

Se apro il file CSV player_stats utilizzando Blocco note, posso vedere che i valori nel file Excel sono stati salvati come valori separati da virgole:

Tieni presente che in questo esempio siamo riusciti a salvare due fogli nella nostra cartella di lavoro come singoli file CSV, ma questa stessa macro funzionerà con qualsiasi numero di fogli.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni in VBA:

VBA: come contare il numero di fogli in una cartella di lavoro
VBA: come estrarre i dati da un’altra cartella di lavoro
VBA: come aggiungere nuovi fogli

Aggiungi un commento

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