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でファイルに出力