我有以下 Excel VBA 脚本,我在 Excel for 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 ,我无法通过PHP转换为UTF-8,所以我希望让VBA以UTF-8保存这些文件格式首先。
我找到了一些解决方案,用于通过Stream对象和CreateObject从VBA保存文本,但它是apparently not possibile on the Mac to use CreateObject to write directly to files。
如何使用Excel for Mac 2011将工作表保存为UTF-8格式的CSV文件?
答案 0 :(得分:1)
我认为你自己必须自己创建文件是正确的,而且我很确定你不能使用CreateObject来创建流。但是,您可能需要考虑使用Open,Write等(很多示例,但是 here's one)。我首先要做一个非常小的实验性的,只是为了检查最终的编码。
克里斯
答案 1 :(得分:0)
我不知道这是否适用于Mac 2011的Excel,但是对于较新的版本,只需使用FileFormat:=xlCSVUTF8
,它将文件保存为UTF-8。