【VBA】UTF-8のBOM取り

職場ではソース管理とドキュメント管理に
Apache Subversionを利用しています

Apacheには主に認証とログ出力の役割を持たせています

認証自体は外部のドメインコントローラが行い、
認証後の権限はテキストファイル(svnaccessfile)で制御しています

svnaccessfileには権限を設定するリポジトリパスと、
そのパスに対してユーザーに与える権限を記述します

この時、Excelにてユーザー名やリポジトリ名・権限を記載し、
svnaccessfileを出力するようなマクロを利用しています

このsvnaccessfileは文字コードUTF-8でなければいけないため、
マクロによるテキスト出力はADODBオブジェクトを利用して行っています
(TextStreamオブジェクトではUTF-8は出力できません)

しかし、ただUTF-8にするだけでは正常に作動せず、
BOM(エンディアンを判別するための先頭3バイトのマーク)を削除する必要があります

実装はこのような感じで行いました

                          • -

Private target_txt As Object
Private result_txt As Object

'オブジェクト作成
Set target_txt = CreateObject("ADODB.Stream")
Set result_txt = CreateObject("ADODB.Stream")


〜〜〜〜省略〜〜〜〜

'''BOM削除'''

target_txt.Position = 0 'ファイルの先頭に戻る
target_txt.Type = 1 'テキストからバイナリへ変更
target_txt.Position = 3 'BOMのサイズ分位置をずらす
result_txt.Type = 1 'テキストからバイナリへ変更
result_txt.Open
result_txt.CopyTo result_txt '結果出力ファイルへBOMを抜いた部分をコピー

'ファイル保存
result_txt.SaveToFile "ファイル名" 2

                          • -

中々文字コードなりBOMなりで引っかかったので
備忘録的に載せてみました