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

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

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

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

3 ответа

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

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

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

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


Для открытия

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

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

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

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

и выберите запятую

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

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

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


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

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

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

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

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

С помощью Delimiter:=";" по-видимому, работает только с .txt,

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

Workbooks.Open(Filename:=fullpath, Local:=True)
Другие вопросы по тегам