VBA

vba、UTF-8・BOMなしでファイル出力

More than 3 years have passed since last update.

excelのシートのセルにあるデータを元に、utf-8、BOMなしファイルを出力するために実装したもの。


こーど

Public Function writeFile(in_filpth As String, in_buf As String) As Boolean

writeFile = False
On Error GoTo Err
Dim st As New ADODB.Stream
With st
.Type = adTypeText
.Charset = "UTF-8"
.Open
.WriteText in_buf
.Position = 0
.Type = adTypeBinary
.Position = 3
Dim buf As Variant
buf = .Read()
.Position = 0
.Write buf
.SetEOS
.SaveToFile in_filpth, adSaveCreateOverWrite
End With
st.Close
Set st = Nothing
writeFile = True
Err:
If Err.Number <> 0 Then
Debug.Print "writeFile(): " & Err.description
End If
End Function


こーどのせつめい


  • ADODB.Streamを使用

  • 始めにタイプadTypeText、Charset "UTF-8"で、ファイルに出力する内容を書き込む

  • 次に、タイプをadTypeBinaryにして、BOMを飛ばして、書き込んだ内容を変数bufに設定する

  • BOMを潰すために、Positionを0にして、変数bufの内容を書き戻す

  • BOMを潰した分、後ろにゴミが残るので、SetEOSで取り除く

  • SaveToFileでファイルに出力