Excel non rispetta l'impostazione del delimitatore per la lettura o la scrittura di file CSV


20

Durante il salvataggio / apertura dei file CSV in Excel, il separatore predefinito è un punto e virgola (;), poiché ho bisogno che sia una virgola (,) Ho provato a cambiarlo modificando le impostazioni di lingua e internazionali seguendo diversi altri post su questo problema ( cioè Come far interpretare Excel dalla virgola come delimitatore predefinito nei file CSV? ).

Tuttavia, dopo aver modificato la sezione Elenco in quelle impostazioni, Excel continua a salvare i file CSV con un punto e virgola. È perché Excel è stato installato mentre il mio separatore di elenco era impostato come punto e virgola? o c'è un'altra impostazione che mi manca qui?

Grazie in anticipo.


Il problema è leggere i file CSV esistenti o crearne uno usando la virgola come delimitatore?
fixer1234,

Entrambi, ho già fatto ciò di cui parla @Raystafarian prima di salvare un nuovo file. La mia impostazione regionale è corretta. Quindi apro Excel e salvo come CSV e quando apro il file nel blocco note posso vedere che ha usato un punto e virgola. Se apro in Excel si carica correttamente perché Excel utilizza ancora un; per separare le colonne.
Sandra,

Risposte:


35

Ho trovato il problema. Anche il mio simbolo decimale nelle impostazioni internazionali era una virgola (europea), quindi, anche quando il mio separatore di lista era una virgola, il CSV veniva salvato con punti e virgola. Ora ho cambiato il mio simbolo decimale in un punto e ora il file CSV viene creato correttamente con virgole come separatori. L'ho provato due volte e ora so che ci deve essere un'eccezione: se il simbolo decimale è una virgola, allora il separatore di lista sarà un punto e virgola, anche se è impostato diversamente.


12
Grazie per aver dedicato del tempo per aggiornare il post con una risposta.
Gary's Student,

5

Per salvare

È necessario regolare il separatore di elenco nella lingua e nelle impostazioni internazionali prima di salvare il file -

inserisci qui la descrizione dell'immagine


Per l'apertura

Vai a Dati - Ottieni dati esterni - Dal testo

inserisci qui la descrizione dell'immagine

seleziona il file

Seleziona delimitato , premi il prossimo inserisci qui la descrizione dell'immagine

e seleziona la virgola del delimitatore

inserisci qui la descrizione dell'immagine

Fai clic su Fine

inserisci qui la descrizione dell'immagine


Oppure, tiralo dentro e poi usa il testo per le colonne vedi qui


Se ho letto bene la domanda, sembra che il problema sia la creazione (salvataggio), un file delimitato utilizzando le virgole per il delimitatore (2 ° paragrafo).
fixer1234,

@ fixer1234 sì, è così che l'ho letto all'inizio. Ma poi ho pensato che il primo paragrafo fosse quello importante. Non ho idea di quale sia corretto. Ad ogni modo, non ho altra soluzione per la creazione se non quella che l'OP ha detto di aver già provato.
Raystafarian,

Sì, ho modificato le impostazioni internazionali prima di salvare il file. Non ha aiutato Quando ricevo file CSV da altre persone che sono delimitati da una virgola, quindi utilizzo il metodo per importare correttamente i dati, quindi salvo e passa a un punto e virgola. È fastidioso perché ogni volta che devo andare al blocco note e sostituire tutti i punti e virgola con virgole prima di utilizzare il mio CSV come file di importazione.
Sandra,

0

Ecco una macro molto bella che funziona abbastanza bene:

Sub saveCSV()
File = Application.GetSaveAsFilename(InitialFileName:="file.csv", FileFilter:="CSV (*.csv), *.csv")
ActiveWorkbook.SaveAs Filename:=File, FileFormat:=xlCSV, CreateBackup:=False, local:=False
End Sub

0

Questo è un po 'vecchio, ma ho riscontrato lo stesso problema:
aveva un CSV delimitato da punto e virgola ( ;). Anche le impostazioni del separatore di sistema (Windows) sono impostate su punto e virgola.

  • Se avessi aperto il CSV manualmente, il file sarebbe stato separato correttamente.
  • Se lascio che VBA lo apra, lo separa in modo errato con una virgola.

L'uso Delimiter:=";"apparentemente funziona solo con .txt.

TUTTAVIA, usando Local :=Truerisolto il problema per me:

Workbooks.Open(Filename:=fullpath, Local:=True)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.