UTF-8形式のテキストファイルの読み込みをする
VBAをUTF-8形式で作成されたテキストを読み込むには、ADOのStreamオブジェクト(ADODB.Stream)を利用することで読み込むことができます。
下記のサンプルコードでは1行ずつ読み込む方法とすべてのテキストを一括で読み込む方法を記載しています。
動作確認
Windows10/Excel2016:○
Windows11/Excel2024:○
●行単位で読み込む
'******************************************************************
' テキストファイルの読み込み(行単位)
'******************************************************************
Sub ReadTextFile()
Dim sFilePath As String
sFilePath = "C:\VBA\UTF8\テキスト_UTF8.txt"
Call ReadText_UTF8_Line(sFilePath)
End Sub
'******************************************************************
' UTF-8形式のテキストデータを1行ずつ読み込む(改行コードはLF)
'------------------------------------------------------------------
' 第1引数:テキストファイルのパス
'******************************************************************
Sub ReadText_UTF8_Line(getFilePath As String)
'ADODB.Streamオブジェクトの作成
Dim oADO As Object
Set oADO = CreateObject("ADODB.Stream")
'設定
oADO.Charset = "UTF-8"
oADO.Mode = 3 '1:読み取り専用 3:読み取り/書き込み両方
oADO.Type = 2 '1:バイナリデータ 2:テキストデータ 0:不明(規定値)
oADO.LineSeparator = 10 '改行コード 10:LF 13:CR -1:CRLF(規定値)
oADO.Open
oADO.LoadFromFile getFilePath 'ファイルを読み込む
Dim sLine As String
Dim i As Long: i = 1
'1行ずつ読み込み
Do While Not (oADO.EOS)
sLine = oADO.ReadText(-2) '1行ずつ読み込むには"-2"を指定
'シートにアウトプット
Sheets("Sheet1").Cells(i, 1) = sLine
i = i + 1
Loop
oADO.Close
Set oADO = Nothing
End Sub■実行結果


●すべての内容を一括で読み込む
'******************************************************************
' テキストファイルの読み込み
'******************************************************************
Sub ReadTextFile_All()
Dim sFilePath As String
sFilePath = "C:\VBA\UTF8\テキスト_UTF8.txt"
Call ReadText_UTF8(sFilePath)
End Sub
'******************************************************************
' UTF-8形式のテキストデータを読み込む
'------------------------------------------------------------------
' 第1引数:テキストファイルのパス
'******************************************************************
Sub ReadText_UTF8(getFilePath As String)
'ADODB.Streamオブジェクトの作成
Dim oADO As Object
Set oADO = CreateObject("ADODB.Stream")
'設定
oADO.Charset = "UTF-8"
oADO.Mode = 3 '1:読み取り専用 3:読み取り/書き込み両方
oADO.Type = 2 '1:バイナリデータ 2:テキストデータ 0:不明(規定値)
oADO.LineSeparator = 10 '改行コード 10:LF 13:CR -1:CRLF(規定値)
oADO.Open
oADO.LoadFromFile getFilePath 'ファイルを読み込む
Dim sText As String
sText = oADO.ReadText(-1) 'すべてをテキストを読み込むには"-1"を指定
oADO.Close
Set oADO = Nothing
'シートにアウトプット
Sheets("Sheet1").Cells(1, 1) = sText
End Sub■実行結果




