VBAオジサンのらくがき帳

テキストファイルを扱う(UTF-8版)

2021-11-06 00:00:00

テキストファイルを直接編集できると便利なことがあります。テキストファイルはフォントやフォーマットなどの設定がない文字だけの情報を格納しているファイルで、Windows標準のメモ帳であつかえるファイルの形式です。※メモ帳のデフォルトエンコーディングUTF-8となり、以前紹介したOpenステートメントを使う方法では文字化けしてしまいます。

ファイルを作成してテキストを追加するサンプルは以下のようになります。

Dim fileName As String

fileName = "C:\data\out.txt"
With CreateObject("ADODB.Stream")
    .Charset = "UTF-8"
    .Open
    .WriteText "1行目", 1
    .WriteText "1行目", 1
    .SaveToFile fileName, 2
    .Close
End With

追加する場合は上のコードの WriteText の前に LoadFromFile でデータを読み込みます。

fileName = "C:\data\out.txt"
With CreateObject("ADODB.Stream")
    .Charset = "UTF-8"
    .Open
    .LoadFromFile fileName
    .Position = .Size
    .WriteText "3行目", 1
    .WriteText "4行目", 1
    .SaveToFile fileName, 2
    .Close
End With

テキストファイルを読み込むときも同様に ADODB.Stream オブジェクトを作成します。テキストファイルを読んで、そのままイミディエイトウィンドウに表示するコードは以下のようになります。

Dim buf As String
Dim fileName As String

fileName = "C:\data\in.txt"
With CreateObject("ADODB.Stream")
    .Charset = "UTF-8"
    .Open
    .LoadFromFile fileName
    buf = .ReadText
    .Close
End With
Debug.Print buf