| 内容 | Sub saveFile(filename, text)
On Error Resume Next
' ADODB.Streamのモード
Dim adTypeBinary : adTypeBinary = 1
Dim adTypeText : adTypeText = 2
Dim adSaveCreateOverWrite : adSaveCreateOverWrite = 2
' ADODB.Streamを作成
Dim pre : Set pre = CreateObject("ADODB.Stream")
' 最初はテキストモードでUTF-8で書き込む
pre.Type = adTypeText
pre.Charset = "UTF-8"
pre.Open()
pre.WriteText(text)
' バイナリモードにするためにPositionを一度0に戻す
' Readするためにはバイナリタイプでないといけない
pre.Position = 0
pre.Type = adTypeBinary
' Positionを3にしてから読み込むことで最初の3バイトをスキップする
' つまりBOMをスキップします
pre.Position = 3
Dim bin : bin = pre.Read()
pre.Close()
' 読み込んだバイナリデータをバイナリデータとしてファイルに出力する
' ここは一般的な書き方なので説明を省略
Dim stm : Set stm = CreateObject("ADODB.Stream")
stm.Type = adTypeBinary
stm.Open()
stm.Write(bin)
stm.SaveToFile filename, adSaveCreateOverWrite ' force overwrite
stm.Close()
End Sub
|