如何使用Excel for Mac 2011将工作表保存为UTF-8格式的CSV文件?

时间:2011-01-18 10:00:13

标签: excel macos utf-8 excel-vba vba

我有以下 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保存这些文件格式首先。

alt text

我找到了一些解决方案,用于通过Stream对象和CreateObject从VBA保存文本,但它是apparently not possibile on the Mac to use CreateObject to write directly to files

如何使用Excel for Mac 2011将工作表保存为UTF-8格式的CSV文件?

2 个答案:

答案 0 :(得分:1)

我认为你自己必须自己创建文件是正确的,而且我很确定你不能使用CreateObject来创建流。但是,您可能需要考虑使用Open,Write等(很多示例,但是 here's one)。我首先要做一个非常小的实验性的,只是为了检查最终的编码。

克里斯

答案 1 :(得分:0)

我不知道这是否适用于Mac 2011的Excel,但是对于较新的版本,只需使用FileFormat:=xlCSVUTF8,它将文件保存为UTF-8。