#594 UTF-8やEUC形式のテキストファイルを読み込むには? VBA

通常のVBAによるテキストファイルからのデータ読み込み(Line Input命令など)では、キャラクタコードを指定するパラメータなどはなく、Shift-JIS形式のつもりで読み込まれます。もしそのテキストファイルがUTF-8やEUCといった形式で保存されている場合、VBAの処理上、文字化けしてしまいます。
イミディエイトウィンドウの実行例

そのような場合、ADOの「Stream」オブジェクトを利用します。

このオブジェクトでは「Charset」プロパティを任意に設定することで、キャラクタコードを指定してテキストファイルを読み込むことができます。UTF-8やEUCといった形式でディスク上に保存されているテキストファイルを「LoadFromFile」メソッドで読み込み、通常のShift-JISのデータとして内部処理することができます。


次の例では、ディスク上にあるUTF-8形式の「UTF-8形式.txt」およびEUC形式の「EUC形式.txt」ファイルを丸ごと読み込んで、その内容をイミディエイトウィンドウに出力しています。

Dim strm As New ADODB.Stream
Dim strData As String

With strm
  'キャラクタコードを設定
  .Charset = "UTF-8"
  'Streamオブジェクトを開く
  .Open
  'テキストファイルをStreamオブジェクトに読み込み
  .LoadFromFile "D:\DATA\UTF-8形式.txt"
  'Streamオブジェクトの内容を変数strDataに読み込み
  strData = .ReadText
  '変数strDataの内容をイミディエイトウィンドウに出力
  Debug.Print strData
  'Streamオブジェクトを閉じる
  .Close: Set strm = Nothing
End With

With strm
  .Charset = "EUC-JP"
  .Open
  .LoadFromFile "D:\DATA\EUC形式.txt"
  strData = .ReadText
  Debug.Print strData
  .Close: Set strm = Nothing
End With


イミディエイトウィンドウの実行結果
| Index | Prev | Next |

この情報は参考になりましたか?、問題は解決しましたか?、もしまだなら......
T'sWareのワンポイトテクニカルアドバイスをご利用ください。3000円/件〜でご支援します。
スタンドアロンからSQL Server対応まで、オーダーメイドのシステムを短納期・安価でお届けします
 

Copyright © T'sWare All rights reserved