2017-01-30 151 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'任何想法如何解决? –