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

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

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

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

решение1

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

решение2

Для экономии

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

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


Для открытия

Идти кДанные - Получить внешние данные - Из текста

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

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

Выбиратьразграниченный, Нажмите "Далее введите описание изображения здесь

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

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

Нажмите «Готово»

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


Или вытащите его и используйте текст в столбцах.глянь сюда

решение3

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

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

решение4

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

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

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

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

Workbooks.Open(Filename:=fullpath, Local:=True)

Связанный контент