Fun-Techlab.com

おじさんエンジニアのプログラミングとLinuxのTry & Error

*

[VBA] ADODB.StreamでBOMなしUTF-8のファイルを作成する方法

   

ADODB.StreamオブジェクトのSaveToFileメソッドでUTF-8形式のファイルを作成した場合、ファイルの先頭にBOM(Byte Order Mark)が付加されてしまいます。これを解決するための方法を整理します。

今回のいきさつは、
仕事でVBAを使ってミドルウェアの設定コマンドを自動生成するツールを作成し、生成されたコマンドをLinuxサーバー上で実行したところエラーになったことです。テキストベースでみても不備はなかったんですが、バイナリデータをみると意味不明なコードが紛れ込んでいました。

調べたところBOMコードが付加されていることが原因でコマンド実行時にエラーになっていたようです。

ADODB.StreamオブジェクトとBOMが付与されてしまうので、先頭の3byteを除外してテキスト出力することでこれを解決します。
ロジックとしては、下記のようになります。

 - Excel, vba