VBAでテキストファイルを読み込んで、テキストファイルの内容をVBAで利用することができます。
Shift-JISファイルのテキストファイルを読み込む #
VBAでShift-JISのテキストファイルを読み込むにはMicrosoft Scripting RuntimeのFileFileSystemObject
を使用して、
テキストファイルを読み込みます。
Microsoft Scripting Runtime オブジェクト ライブラリ | Microsoft Learn
事前に参照設定でMicrosoft Scripting Runtimeを選択しておく必要があります。
参照設定は下記の内容を参照してください。
VBAで参照設定を行う
·1 分
Programming
VBA
Microsoft Scripting RuntimeのFileFileSystemObject
を使用して
テキストファイルの内容を読み込むコードは以下になります。
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のテキストファイルを読み込んで、メッセージボックスに表示してみます。
このテキストは
読み込みテストのための
テキストです。
ReadTextFile
を利用してテキストファイルの内容をメッセージボックスに表示すると下記のように表示されます。

UTF-8のテキストファイルを読み込む #
上記のShift-JISのコードでUTF-8のテキストファイルを読み込むと文字化けします。
UTF-8のテキストファイルを読み込むためにはADODB.stream
を使用します。
事前に参照設定でMicrosoft ActiveX Data Objects Libraryを選択しておく必要があります。
Stream オブジェクト (ADO) | Microsoft Learn
文字コードUTF-8、改行コードLFのテキストファイルを読み込むことを想定したコードは下記になります。
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を指定してます。