メインコンテンツへスキップ
【VBA】テキストファイルを読み込む

【VBA】テキストファイルを読み込む

·3 分
Programming VBA
かずさプログラマー
著者
かずさプログラマー
業務の作業自動化を行っています。Go、VBA、Pythonを主に使用しています。過去にはC#、VB.Net、JavaScriptも使用していました。
目次

VBAでテキストファイルを読み込んで、テキストファイルの内容をVBAで利用することができます。

Shift-JISファイルのテキストファイルを読み込む
#

VBAでShift-JISのテキストファイルを読み込むにはMicrosoft Scripting RuntimeのFileFileSystemObjectを使用して、 テキストファイルを読み込みます。

事前に参照設定で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を選択しておく必要があります。

文字コード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を指定してます。

関連記事

VBAで参照設定を行う
·1 分
Programming VBA
VBAで日付の曜日を取得する
·2 分
Programming VBA
VBAで指定時間だけ処理を止める
·2 分
Programming VBA