文字コードがUTF-8形式のテキストファイルを、Excel VBAの LINE INPUTステートメントでそのまま読み込むと文字化けしてしまう、というところまで進んできました。
なんとか文字化け無しでテキストを取得したいということで調べてみると、ADO(ActiveX Database Object)の "ADODB.Stream"というものを利用すれば、UTF-8形式の文字コードでも取り込めるということがわかりました。
以下、コードを紹介します。
Function ファイルパスを取得 と、Function 出力開始セルを指定 については、昨日の記事と同じものです。
Sub UTF8形式のテキストファイルを文字化け無しで取り出す という名前のプロシージャを新たに作成しました。
このマクロで何ができるかというと、UTF-8形式のテキストファイルを選択して、その内容をメッセージボックス上に表示し、また、イミディエイトウィンドゥに出力します。
それぞれの表示文字数に上限があり、それを超える場合は、メッセージボックスでは、テキストファイルの先頭から文字制限数までを表示。イミディエイトウィンドゥでは、ファイルの最後尾から先頭へ向かって、出力制限文字数までを表示します。
はてなブログの記事のエクスポートファイルの読み込みを試してみたところ、文字化けせずにテキストを表示することができました。
取得したテキストデータをExcelシートへ出力するには、改行コードで区切って1セル毎に格納していく処理が必要です。本日はそこまで手が回りませんでしたので、明日以降に作成していきたいと思います。
このマクロは、文字コードがUTF-8形式専用で、例えばシフトJIS形式のファイルを読み込むと逆に文字化けします。シフトJIS形式のファイルを扱う場合は.
Charset = "UTF-8" → "SHIFT-JIS"
へ変更する必要があります。
引き続き、明日も取り組みます。