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)