Specificare un delimitatore quando si salva un file CSV in una macro (Microsoft Excel)
Durante la creazione di un file CSV utilizzando i menu per esportare un foglio di lavoro, Arkadiusz ha notato che può specificare che desidera utilizzare un punto e virgola (;)
come delimitatore di campo. Tuttavia, se salva un file CSV utilizzando una macro (FileFormat: = xlCSV o xlCSVWindows), non può specificare un punto e virgola come delimitatore.
Funziona in questo modo in base alla progettazione in VBA. L’implementazione Excel delle routine di esportazione per VBA utilizza sempre le impostazioni internazionali di Windows per determinare come separare gli elementi in un CSV.
In particolare, la routine esamina il campo Separatore elenco per il delimitatore. Ciò significa che è possibile, se lo si desidera, modificare il delimitatore in un punto e virgola modificando l’impostazione Separatore elenco nella configurazione delle impostazioni internazionali.
Se non vuoi modificare le impostazioni regionali, puoi invece scrivere la tua macro che produrrà il file nel modo che desideri.
Considera, per un momento, la seguente macro, che produrrà il file:
Sub CreateFile() FName = ActiveWorkbook.Name If Right(FName, 4) = ".xls" Then FName = Mid(FName, 1, Len(FName) - 4) End If Columns(1).Insert Shift:=xlToRight For i = 1 To Range("B65000").End(xlUp).Row TempString = "" For j = 2 To Range("HA1").End(xlToLeft).Column If j <> Range("HA1").End(xlToLeft).Column Then TempString = TempString & _ Cells(i, j).Value & ";" Else TempString = TempString & _ Cells(i, j).Value End If Next Cells(i, 1).Value = TempString Next Columns(1).Select Selection.Copy Workbooks.Add Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.SaveAs Filename:=FName & ".txt", _ FileFormat:=xlPrinter End Sub
Questa macro ha un approccio univoco alla creazione del file di output. Quello che fa è inserire una colonna a sinistra del foglio di lavoro, quindi concatena tutti i dati a destra di quella colonna nella colonna A appena inserita. Aggiunge un punto e virgola tra ogni campo. Una volta fatto, acquisisce le informazioni che ha inserito nella colonna A e le scrive in una nuova cartella di lavoro. Questa cartella di lavoro viene quindi salvata su disco utilizzando il formato di file xlPrinter, il che significa che viene visualizzata “così com’è” senza alcuna modifica.
Se preferisci un approccio più diretto, scrivendo le informazioni direttamente su un file senza apportare modifiche al tuo foglio di lavoro, dai un’occhiata alla macro in questo post del blog:
https://web.archive.org/web/20060302021412/http:/www.dicks-blog.com:80/archives/2004/11/09/roll-your-own-csv/
La macro utilizza virgole tra ogni campo, ma può essere facilmente modificata in modo che utilizzi invece il punto e virgola.
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (3232) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: