Mark ha notato una cosa strana quando si tratta di creare file CSV con Excel: i file non sono sempre coerenti nel modo in cui terminano ogni riga nei dati di output. Quando crea un file CSV che ha, forse, 70 campi (colonne) di dati e quindi visualizza il file CSV in un editor di testo, ha notato che i record contengono tutti ritorni a capo, ma in posti diversi. Alcuni record hanno una stringa di virgole che rappresentano i campi vuoti, quindi terminano nel posto “giusto”; altri finiscono subito dopo l’ultima colonna popolata; alcuni hanno poche virgole, ma non abbastanza per tutti i campi vuoti. Mark si è chiesto il motivo per cui ciò si verifica e come può ottenere che i file CSV contengano un numero consistente di campi di output.

Un modo relativamente semplice per aggirare il problema consiste nell’includere un campo “fittizio” completamente popolato nei dati, prima di salvarli come CSV. Ad esempio, se la tua tabella contiene 70 colonne, nella cella A71 inserisci un punto. Copia il contenuto di questa cella verso il basso, per tutte le righe che hai nella tabella. Quando quindi esporti il ​​foglio di lavoro in CSV, Excel includerà il campo fittizio, ma ancora più importante includerà il numero corretto di delimitatori di campo (virgole) prima di quel campo finale in ogni record.

Se non vuoi il campo fittizio, puoi provare questo:

  1. Seleziona una delle celle nella riga dell’intestazione.

  2. Premi MAIUSC + CTRL + 8. Viene selezionata l’intera tabella dati.

  3. Premere Ctrl + H per visualizzare la scheda Sostituisci della finestra di dialogo Trova e sostituisci. (Vedi figura 1.)

  4. Assicurati che la casella Trova sia completamente vuota.

  5. Nella casella Sostituisci con immettere un singolo spazio.

  6. Fare clic su Sostituisci tutto. Excel dovrebbe informarti di quante sostituzioni sono state effettuate.

Questi passaggi sostituiscono tutte le celle vuote con celle che contengono un singolo spazio. È quindi possibile eseguire l’esportazione in CSV e verrà esportato il numero corretto di campi per ogni singola riga.

Infine, se esporti regolarmente tabelle di grandi dimensioni in formato CSV, potresti voler creare una macro che esegua la creazione del file per te. Quello che segue è solo un esempio del tipo di macro che puoi usare:

Sub CreateCSV()

Dim wkb As Workbook     Dim wks As Worksheet     Dim wksOri As Worksheet     Dim iCols As Integer     Dim lRow As Long     Dim iCol As Integer     Dim lRows As Long     Dim sFilename As String

Application.ScreenUpdating = False     sFilename = "C:\test.csv"

Set wksOri = ActiveSheet     iCols = wksOri.Cells. _         SpecialCells(xlCellTypeLastCell).Column     lRows = wksOri.Cells. _         SpecialCells(xlCellTypeLastCell).Row

Set wkb = Workbooks.Add     Set wks = wkb.Worksheets(1)



For lRow = 1 To lRows         For iCol = 1 To iCols             With wks.Cells(lRow, 1)

If iCol = 1 Then                     .Value = wksOri.Cells(lRow, iCol).Text                 Else                     .Value = .Value & "," & _                         wksOri.Cells(lRow, iCol).Text                 End If             End With         Next     Next

Application.DisplayAlerts = False     wkb.SaveAs FileName:=sFilename, _         FileFormat:=xlCSV     wkb.Close     Application.DisplayAlerts = True     wksOri.Parent.Activate     Application.ScreenUpdating = True     MsgBox sFilename & " saved"



Set wks = Nothing     Set wkb = Nothing     Set wksOri = Nothing End Sub

La macro crea una cartella di lavoro nuova di zecca e quindi “compila” nella colonna A del primo foglio di lavoro della cartella di lavoro le informazioni dal foglio di lavoro originale. Questi dati, che conterranno un delimitatore per ogni singolo campo dell’originale, vengono poi salvati come file CSV. Infine, la cartella di lavoro temporanea viene eliminata.

Il percorso e il nome del file CSV sono codificati nel codice (la variabile sFileName), anche se potrebbe essere modificato per fare in modo che il codice richieda un nome file se lo si desidera.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (3068) si applica a Microsoft Excel 97, 2000, 2002 e 2003.