Сохранить как CSV с разделителем с запятой
В настоящее время я использую эту функцию для сохранения, но у меня есть проблема с ней:
Private Sub spara()
ActiveWorkbook.SaveAs Filename:="T:filepath+ ActiveWorkbook.Name", _
FileFormat:=xlCSV, CreateBackup:=False
End Sub
он автоматически сохраняет с ,
но мне нужно его сохранить с ;
в свой файл. Можно ли как-то изменить то, как он экономит?
Я пробовал googling вокруг этой проблемы, но все макросы относительно .сохранение csv-файлов-это просто способ сохранения .CSV и как разделить несколько листов .csv .
6 ответов
какой язык использует Excel? Если ваш родной язык использует "; "по умолчанию, вы можете передать параметр "local:=True"
ActiveWorkbook.SaveAs Filename:="C:\Temp\Fredi.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True
если нет, ваш единственный выбор-поиск и замена после этого...
измените параметры Excel (Дополнительно, Параметры редактирования), чтобы установить десятичный разделитель на ,
(очевидно (!))
вполне возможно, что эта проблема не разрешима только с помощью Excel VBA. Проблема в том, что Excel Save As...
использует локаль машины определяет значение разделителя списка, Excel VBA всегда использует локаль en-US, таким образом, он всегда использует ,
как разделитель списка.
Я бы рекомендовал сохранить CSV, а затем использовать пользовательское консольное приложение/скрипт для постобработки. Существует множество парсеров CSV, которые могут читать ,-csv
и сохраните его как ;-csv
.
Я искал это, чтобы помочь решить аналогичную проблему, которую я имел, У меня был лист excel, который я экспортирую в файл csv, это затем загружается в другом месте, но требует использования точек с запятой, а не запятых для разделения символов, это отлично работало, когда я вручную экспортировал файл, поскольку я уже изменил следующее Панель управления > > регион и язык > > дополнительные настройки > > разделитель списков от запятой до запятой. Но когда я попытался автоматизировать через VBA, он по умолчанию назад к запятой, чтобы исправить, я добавил местный папраметр, как предложил Кристиан Зауэр, выше которого затем поднимает тот факт, что я изменил свои региональные настройки.
ActiveWorkbook.SaveAs Filename:="Filename.txt", FileFormat:=xlCSV, CreateBackup:=False, Local:=True
спасибо Кристиану за указатель.
Я решил его, добавив "SaveChanges:=False" при закрытии книги
With ActiveWorkbook
.SaveAs Filename:="T:\filepath+ ActiveWorkbook.Name", FileFormat:=xlCSV, Local:=True
.Close SaveChanges:=False
End With
для людей, имеющих проблемы с этим кодом
dim wa as Workbook
Workbooks.OpenText FileName:=path2file, _
DataType:=xlDelimited, Semicolon:=True, Local:=True
set wa = ActiveWorkbook
wa.SaveAs FileName:=path2file, FileFormat:=xlCSV, _ ConflictResolution:=xlLocalSessionChanges, Local:=True
wa.Close False
вторая строка действительно важна, если wa.Close False
нет, он попросит разрешения на сохранение, или если wa.Close True
Он заменит"; "для",".
после перехода в локальные настройки и создания"; " разделитель списка, VBA все еще разделялся с ",". Изменил код выше, и это было сделано.
надеюсь, это прольет свет на некоторые