2017-01-30 24 views
2

Mac用のExcel 2016でVisual Basic(VBA)を使用してUTF-8ファイルを生成することは可能ですか? エンコードされたXMLまたはTXTファイルを生成する必要があります。あなたが直接、文字列データをダンプすることができるようにMac ExcelでVBAを使用してUTF-8を生成

おかげ

+0

いいえ、Mac用のExcelでこれを行う方法はありません。完全なExcelクライアントを使用する必要があります。 – TylerH

+0

私はVBAをMacでやっていませんが、直接行うことができない場合は、デフォルトのエンコーディングを使用してテキストファイルを保存してから、AppleScriptがVBAから呼び出されたAppleScriptを使ってエンコーディングを変更できるようにします'AppleScriptTask command':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

一見すると、うまくいくようです。ファイルを16進数で見ると、Excelは常にビットシーケンス "000A00"を最後に追加することがわかります。これは他のプログラムでエラーにつながります。現状のままです: 'printLineUtf16 fnum、' '' '=' FEFF00E1 000A00'-BE: 'FEFF00E1'それを解決する方法はありますか? –

関連する問題