У меня есть следующий Excel VBA скрипт, который я использую в Excel для Mac 2011 , чтобы экспортировать все листы файла Excel в файлы .csv.
Sub save_all_csv()
On Error Resume Next
Dim ExcelFileName As String
ExcelFileName = ThisWorkbook.Name
For Each objWorksheet In ThisWorkbook.Worksheets
ExcelFileNameWithoutExtension = RemoveExtension(ExcelFileName)
CsvFileName = ExcelFileNameWithoutExtension & "__" & objWorksheet.Name & ".csv"
Application.DisplayAlerts = False
objWorksheet.SaveAs Filename:="data:storage:original_excel:" & CsvFileName, FileFormat:=xlCSV, CreateBackup:=False
Application.DisplayAlerts = True
Next
Application.DisplayAlerts = False
Application.Quit
End Sub
Function RemoveExtension(strFileName As String)
strFileName = Replace(strFileName, ".xlsx", "")
strFileName = Replace(strFileName, ".xls", "")
RemoveExtension = strFileName
End Function
Проблема в том, что они сохраняются как Western Mac OS Roman , который я не могу преобразовать в UTF-8 через PHP, поэтому я хотел бы, чтобы VBA сохранил эти файлы в формате UTF-8 во-первых.
Я нашел несколько решений для сохранения текста из VBA через объект Stream и с помощью CreateObject , но , очевидно, на Mac не возможно использовать CreateObject для прямой записи в файлы .
Как сохранить рабочие листы в виде файлов CSV в формате UTF-8 в Excel для Mac 2011?