2017-01-30 137 views
2

是否可以在Excel 2016 for Mac中使用Visual Basic(VBA)生成UTF-8文件? 我需要生成編碼的XML或TXT文件。Mac Excel使用VBA生成UTF-8

感謝

+0

不,在Mac的Excel中沒有辦法做到這一點。您將需要使用完整的Excel客戶端。 – TylerH

+0

我還沒有在Mac上完成VBA,但是如果你不能直接做,你可以用任何默認編碼保存一個文本文件,然後讓Apple Script改變編碼,使用從VBA調用的AppleScript AppleScriptTask命令:https://msdn.microsoft.com/en-us/library/office/mt654021.aspx –

回答

3

不是UTF-8,但UTF-16是什麼VBA內部使用,這樣你就可以直接傾倒字符串數據:

Dim fnum As Integer 
fnum = FreeFile() 
Open "utf16.txt" For Binary Access Write As fnum 

'write UTF-16 Byte Order Marker 
' 
Put #fnum, 1, &HFE 
Put #fnum, 2, &HFF 

printLineUtf16 fnum, "Olá Mundo!" 

Close #fnum 

Function printLineUtf16(fnum As Integer, str As String) 

    str = str & ChrW(10)   'append newline 

    Dim data() As Byte    'coerce string to bytes 
    data = str 

    Put #fnum, LOF(fnum) + 1, data 'append bytes to file 

End Function 

這應該在Excel的Mac 2011年和2016年的工作,並在Windows版本中。請注意,您將無法在編輯器中輸入Unicode字符串文字,只需簡單重音的拉丁字母(如上面的「á」),但單元格的Value中指定的字符串將保留爲Unicode。

+0

乍一看,它似乎工作。如果以十六進制查看文件,可以看到Excel總是在最後添加位序列「000A00」。這會導致其他程序出錯。 AS-IS:'printLineUtf16 fnum,「á」'='FEFF00E1 000A00' TO-BE:'FEFF00E1'任何想法如何解決? –