VBAにて、「UTF-8」のテキストファイルの読み込み・書き込みの方法について、ご説明いたします。
なお、「Shift-JIS」のテキストファイルの読み込み・書き込みの方法については、以下の記事をご参照ください。
また、そもそも「Shift-JIS」とか「UTF-8」が何なのかという説明は、以下の記事をご参照ください。
VBAを書籍でコツコツ学習したい方はこちら
リンク
「UTF-8」のテキストファイルの読み込み方法
例えば、このようなファイルを読み込むとします。

サンプルプログラム
UTF-8の文字コードで書かれたデータを読み込むときは、ADO(ActiveX Data Objects)という仕組みを使います。
'①読み込んだテキストファイルの格納用変数
Dim buf As String
'②ADOを使えるようにする
With CreateObject("ADODB.Stream")
'③読み取るファイルのエンコードを指定
.Charset = "UTF-8"
'④ファイルを開く準備をする
.Open
'⑤ファイルのフルパスを指定して、ファイルを開く
.LoadFromFile "C:\work\サンプル_UTF-8.txt"
'⑥ファイルを最後まで読み込むまで、処理を繰り返す
Do Until .EOS
'⑦ファイルを1行ずつ読み込む
buf = .ReadText(-2)
'⑧読み込んだデータ(変数buf)を使う処理を記述する
Debug.Print buf
Loop
'⑨ファイルを閉じる
.Close
End With
解説
- 読み込んだテキストファイルの内容を格納するために、String型の変数を準備しておきます。
- CreateObject(“ADODB.Stream”)で、ADOを使えるようにします。
また、以降の処理でADOを使うために、Withで囲みます。
※Withの中のステートメントに「.」(ピリオド)を忘れないようにご注意ください。 - 読み取るファイルのエンコードを指定します。
もちろん、UTF-8以外の文字コードを指定して読み込むことも可能です。 - テキストファイルを開く準備をします。Line Inputステートメントのような、ファイル名の指定は不要です。
- ファイルのフルパスを指定したテキストファイルのデータを、Streamオブジェクトに読み込みます。
- ファイルを1行ずつ読み込んだ後、ループ処理の終了条件として、ファイルを最後まで読んだかを判定するためにEOSプロパティを使います。
- ReadTextメソッドで、Streamオブジェクトからデータを1行ずつ読み込んで、変数bufに格納します。
なお、末尾の(-2)は、1行ずつ読み込むという意味です。
(-2)を省略すると、ファイル全体を一気に読み込んで、変数bufに格納します。この場合、1行ずつ読み込むループ処理は不要です。なお、ファイルサイズが大きい場合に(-2)を省略すると、読み込みに時間がかかりますのでご注意ください。 - 先ほどの⑦で指定した変数を使って、読み込んだデータ(変数buf)の内容を使う処理を記述します。
- 最後にお作法として、開いたStreamオブジェクトを閉じます。
「UTF-8」のテキストファイルの書き込み方法
サンプルプログラム
'①ADOを使えるようにする
With CreateObject("ADODB.Stream")
'②書き込むファイルのエンコードを指定
.Charset = "UTF-8"
'③ファイルを開く準備をする
.Open
'④文字列をファイルに書き込む
.WriteText "ぎゃぎゅぎょ", 1
.WriteText "じゃじゅじょ" '←第2引数を省略したため、改行しない
.WriteText "ぢゃぢゅぢょ", 1
'⑤ファイルのフルパスを指定して、ファイルを保存する
.SaveToFile "c:\work\サンプル_UTF-8書き込み.txt", 2
'⑥ファイルを閉じる
.Close
End With
解説
①~③は、読み取りの場合と同様です。
- CreateObject(“ADODB.Stream”)で、ADOを使えるようにします。
- 書き込むファイルのエンコードを指定します。
- テキストファイルを開く準備をします。
- WriteTextメソッドで、文字列をファイルに書き込みます。
第2引数に「1」を指定すると、書き込むデータの後ろに改行コードを書き込みます。
第2引数を省略するか「0」を指定すると、末尾に改行コードを書き込みません。 - SaveToFileメソッドで、ファイルを保存します。
【構文】
SaveToFile ファイルのフルパス ,保存オプション
【説明】
第2引数の保存オプションは、以下の通りです。
1:指定ファイルが存在しない場合は新規作成
指定ファイルが存在する場合はエラー
2:指定ファイルが存在しない場合は新規作成
指定ファイルが存在する場合は上書き(元データは消える) - 最後にお作法として、開いたStreamオブジェクトを閉じます。
実行結果
上記のサンプルプログラムを実行すると、こんなテキストファイルが作られます。

VBAを書籍でコツコツ学習したい方はこちら
リンク
コメント