VBAでテキストファイルを読み込んで、テキストファイルの内容をVBAで利用することができます。
Shift-JISファイルのテキストファイルを読み込む
VBAでShift-JISのテキストファイルを読み込むにはMicrosoft Scripting RuntimeのFileFileSystemObjectを
使用して、テキストファイルを読み込みます。
事前に参照設定でMicrosoft Scripting Runtimeを選択しておく必要があります。
参照設定は下記の内容を参照してください。

VBAで参照設定を行う
VBAに標準で含まれていない機能があるときは
外部のライブラリを参照して、外部ライブラリ内の機能を利用します。
この外部ライブラリの機能を利用する設定を、参照設定と言います。
Microsoft Scripting RuntimeのFileFileSystemObjectを使用してテキストファイルの内容を読み込むコードは
以下になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
Option Explicit Public Function ReadTextFile(file_path As String) As String '################################################################################### 'テキストファイルの内容を読み込む '事前に参照設定でMicrosoft Scripting Runtimeを設定してください '----------------------------------------------------------------------------------- '引数 :file_path テキストファイルのパス '################################################################################### Dim fso As FileSystemObject Dim ts As TextStream Set fso = New FileSystemObject Set ts = fso.OpenTextFile(file_path, ForReading) Dim txt As String Do Until ts.AtEndOfStream txt = txt & ts.ReadLine & vbNewLine Loop ts.Close ReadTextFile = txt Set ts = Nothing Set fso = Nothing End Function |
下記の内容のShift-JISのテキストファイルを読み込んで、メッセージボックスに表示してみます。
1 2 3 |
このテキストは 読み込みテストのための テキストです。 |
ReadTextFileを利用してテキストファイルの内容をメッセージボックスに表示すると
下記のように表示されます。
UTF-8のテキストファイルを読み込む
上記のShift-JISのコードでUTF-8のテキストファイルを読み込むと文字化けします。
UTF-8のテキストファイルを読み込むためにはADODB.streamを使用します。
事前に参照設定でMicrosoft ActiveX Data Objects Libraryを選択しておく必要があります。
文字コードUTF-8、改行コードLFのテキストファイルを読み込むことを想定したコードは下記になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
Option Explicit Public Function ReadUTF8TextFile(file_path As String) As String '################################################################################### 'UTF-8の改行コードLF、BOM無しテキストファイルの内容を読み込む '事前に参照設定でMicrosoft ActiveX Data Objects Libraryの最新バージョンを設定してください '----------------------------------------------------------------------------------- '引数 :file_path テキストファイルのパス '################################################################################### Dim st As New ADODB.stream st.Open st.Charset = "utf-8" st.LoadFromFile file_path st.LineSeparator = adLF Dim txt As String Do While Not st.EOS txt = txt & st.readText(adReadLine) & vbNewLine Loop ReadUTF8TextFile = txt Set st = Nothing End Function |
ADODB.streamのパラメータにそれぞれ下記の値を設定します。
Charset | utf-8 |
LineSeparator | adLF |
ADODB.streamのreadText関数でテキストを行単位で読み込むためにadReadLineを指定してます。
コメント