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を書籍でコツコツ学習したい方はこちら
リンク
VBAをガッツリ学べるスクールについて

 
  
  
  
  




コメント