Excel не поддерживает настройку разделителя для чтения или записи файлов CSV

20

При сохранении / открытии файлов CSV в Excel разделителем по умолчанию является точка с запятой (;), так как мне нужно, чтобы это была запятая (,) Я попытался изменить его, изменив настройки языка и региона, выполнив несколько других сообщений об этой проблеме ( т.е. как заставить Excel интерпретировать запятую как разделитель по умолчанию в файлах CSV? ).

Однако после изменения разделителя списка в этих настройках мой Excel продолжает сохранять файлы CSV с точкой с запятой. Это потому, что Excel был установлен, а мой разделитель списков был установлен как точка с запятой? или есть другая настройка, которую я здесь пропускаю?

Заранее спасибо.

Sandra
источник
Проблема в чтении существующих файлов CSV или создании файла с использованием запятой в качестве разделителя?
fixer1234
Оба, я уже сделал то, что упомянул @Raystafarian перед сохранением нового файла. Мои региональные настройки правильные. Затем я открываю Excel и сохраняю как CSV, и когда я открываю файл в блокноте, я вижу, что он использовал точку с запятой. Если я открою в Excel, он загрузится правильно, потому что Excel все еще использует; для разделения столбцов.
Сандра

Ответы:

35

Я нашел проблему. Мой десятичный символ в региональных настройках также был запятой (европейский), поэтому даже когда мой разделитель списков был запятой, CSV был сохранен с точкой с запятой. Теперь я изменил свой десятичный символ на точку, и теперь файл CSV создается правильно с запятыми в качестве разделителей. Я проверил это дважды и теперь знаю, что должно быть исключение: если десятичный символ - запятая, то разделитель списка будет точкой с запятой, даже если установлено иначе.

Sandra
источник
12
Спасибо, что нашли время, чтобы обновить пост с ответом.
Студент Гари
5

Для сохранения

Вам необходимо настроить разделитель списка в языковых и региональных настройках перед сохранением файла -

введите описание изображения здесь


Для открытия

Перейти к данным - получить внешние данные - из текста

введите описание изображения здесь

выберите файл

Выберите разделитель , нажмите далее введите описание изображения здесь

и выберите разделитель запятая

введите описание изображения здесь

Нажмите готово

введите описание изображения здесь


Или вытяните его, а затем используйте текст для столбцов, см. Здесь

Raystafarian
источник
Если я правильно прочитал вопрос, похоже, проблема заключается в создании (сохранении) файла с разделителями, используя запятые для разделителя (2-й абзац).
fixer1234
@ fixer1234 да, именно так я и прочитал. Но потом я подумал, что первый абзац был важным. Я понятия не имею, что является правильным. В любом случае, у меня нет решения для создания, кроме того, о котором упоминал ОП, который они уже попробовали.
Raystafarian
Да, перед сохранением файла я изменил региональные настройки. Это не помогло. Когда я получаю файлы CSV от других людей, разделенных запятой, я использую ваш метод для правильного импорта данных, затем сохраняю их, и они переходят в точку с запятой. Это раздражает, потому что каждый раз, когда мне нужно перейти в блокнот и заменить все точки с запятой перед использованием моего CSV в качестве файла импорта.
Сандра
0

Вот очень хороший макрос, который работает довольно хорошо:

Sub saveCSV()
File = Application.GetSaveAsFilename(InitialFileName:="file.csv", FileFilter:="CSV (*.csv), *.csv")
ActiveWorkbook.SaveAs Filename:=File, FileFormat:=xlCSV, CreateBackup:=False, local:=False
End Sub
yo_haha
источник
0

Это немного устарело, но я столкнулся с той же проблемой:
если бы CSV был разделен точкой с запятой ( ;). Параметры системного разделителя (Windows) также установлены на точку с запятой.

  • Если я открыл CSV вручную, файл был отделен правильно.
  • Если я позволю VBA открыть его, он неправильно разделит его запятой.

Использование Delimiter:=";"видимо работает только с .txt.

ОДНАКО, использование Local :=Trueрешило проблему для меня:

Workbooks.Open(Filename:=fullpath, Local:=True)
Николь Каппельхоф
источник