VBAでテキストファイルを読み込みする方法として、FileSystemObjectのOpenTextFileを使用することで実現できます。
FileSystemObjectは、ファイルシステムオブジェクトを操作するための標準ライブラリであり、ファイルやフォルダの作成や削除、コピー、移動などを簡単に行うことができます。
OpenTextFileメソッドは、指定したテキストファイルを開いて、内容を読み込むことができます。
ここでは、FileSystemObjectのOpenTextFileを使ってVBAでテキストファイルを読み込みする方法について説明します。
もくじ
【サンプルソース】テキストファイルの読み込み(ファイル全体を一気に読み込み)
以下は、FileSystemObjectのOpenTextFileを使用してVBAでテキストファイルの内容を一気に読み込みするサンプルコードです。
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
Sub ReadTextFile() Dim fso As Object Dim file As Object Dim text As String ' FileSystemObjectの生成 Set fso = CreateObject("Scripting.FileSystemObject") Dim fileName As String Dim ioMode As Integer Dim fileCreate As Boolean Dim fileFormat As Integer ' ファイルパスを指定 fileName = "D:\200_work\100_sample\AAA\A001.txt" ' ファイルの開き方を指定 ' 1:参照モード ' 2:新規書込モード ' 8:追記モード ioMode = 1 ' ファイルの作成有無を指定 ' True:作成する ' False:作成しない fileCreate = False ' ファイルの文字コードを指定 ' 0:ASCIIファイルとして開く ' -1:Unicodeファイルとして開く ' -2:システムの既定値で開く fileFormat = -2 ' テキストファイルを開いてファイルオブジェクトを取得 Set file = fso.OpenTextFile(fileName, ioMode, fileCreate, fileFormat) ' テキストファイルの内容を読み込む text = file.ReadAll ' 読み込んだ内容を表示 MsgBox text ' ファイルを閉じる file.Close ' オブジェクトの解放 Set file = Nothing Set fso = Nothing End Sub |
上記のサンプルコードでは、まずFileSystemObjectを生成しています。
次に、読み込みしたいファイルパスを指定しています。
ファイルの開き方で、「参照モード」を指定しています。
「参照モード」ではファイルの読み込みが可能ですが、書込みはできません。
ファイルの作成有無で、「作成しない」を指定しています。
ファイルの文字コードで、「システムの既定値」を指定しています。
次に、テキストファイルを開いてファイルオブジェクトを取得しています。
ReadAllでテキストファイルの内容をすべて変数に読み込みしています。
読み込んだ内容を表示しています。
注意点としては、指定したファイルが存在しない場合、エラーが発生します。
必ずファイルを閉じる必要があります。
【サンプルソース】テキストファイルの読み込み(ファイルを1行ずつ読み込み)
以下は、FileSystemObjectのOpenTextFileを使用してVBAでテキストファイルの内容を1行ずつ読み込みするサンプルコードです。
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
Sub ReadTextFileLineByLine() Dim fso As Object Dim file As Object Dim textLine As String ' FileSystemObjectの生成 Set fso = CreateObject("Scripting.FileSystemObject") Dim fileName As String Dim ioMode As Integer Dim fileCreate As Boolean Dim fileFormat As Integer ' ファイルパスを指定 fileName = "D:\200_work\100_sample\AAA\A001.txt" ' ファイルの開き方を指定 ' 1:参照モード ' 2:新規書込モード ' 8:追記モード ioMode = 1 ' ファイルの作成有無を指定 ' True:作成する ' False:作成しない fileCreate = False ' ファイルの文字コードを指定 ' 0:ASCIIファイルとして開く ' -1:Unicodeファイルとして開く ' -2:システムの既定値で開く fileFormat = -2 ' テキストファイルを開いてファイルオブジェクトを取得 Set file = fso.OpenTextFile(fileName, ioMode, fileCreate, fileFormat) Dim data As String data = "" ' ファイルの内容を1行ずつ読み込む Do While Not file.AtEndOfStream textLine = file.ReadLine ' 読み込んだテキストを変数に格納 data = data & textLine & vbCrLf Loop ' 読み込んだテキストを表示 MsgBox data ' ファイルを閉じる file.Close ' オブジェクトの解放 Set file = Nothing Set fso = Nothing End Sub |
上記のサンプルコードでは、テキストファイルを1行ずつ読み込みしています。
テキストファイルを1行ずつ読み込むには、AtEndOfStreamプロパティとReadLineメソッドを利用します。
AtEndOfStreamプロパティは、ファイルの終端に到達したかを判断するのに使用します。
1行ずつ読み込みするときに、行末の改行コードは読み込みされません。
ですから、変数に格納時に改行を付加しています。
【サンプルソース】テキストファイルの読み込み(ファイルを1文字ずつ読み込み)
以下は、FileSystemObjectのOpenTextFileを使用してVBAでテキストファイルの内容を1文字ずつ読み込みするサンプルコードです。
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
Sub ReadTextFileCharByChar() Dim fso As Object Dim file As Object Dim textChar As String ' FileSystemObjectの生成 Set fso = CreateObject("Scripting.FileSystemObject") Dim fileName As String Dim ioMode As Integer Dim fileCreate As Boolean Dim fileFormat As Integer ' ファイルパスを指定 fileName = "D:\200_work\100_sample\AAA\A001.txt" ' ファイルの開き方を指定 ' 1:参照モード ' 2:新規書込モード ' 8:追記モード ioMode = 1 ' ファイルの作成有無を指定 ' True:作成する ' False:作成しない fileCreate = False ' ファイルの文字コードを指定 ' 0:ASCIIファイルとして開く ' -1:Unicodeファイルとして開く ' -2:システムの既定値で開く fileFormat = -2 ' テキストファイルを開いてファイルオブジェクトを取得 Set file = fso.OpenTextFile(fileName, ioMode, fileCreate, fileFormat) Dim data As String data = "" ' ファイルの内容を1文字ずつ読み込む Do While Not file.AtEndOfStream textChar = file.Read(1) ' 読み込んだ文字を表示 data = data & textChar Loop ' 読み込んだテキストを表示 MsgBox data ' ファイルを閉じる file.Close ' オブジェクトの解放 Set file = Nothing Set fso = Nothing End Sub |
上記のサンプルコードでは、テキストファイルを1文字ずつ読み込みしています。
テキストファイルの内容を1文字ずつ読み込むには、Readメソッドを使用します。
引数に1を指定することで、1文字ずつ読み込むことができます。
まとめ
VBAでテキストファイルを読み込みする方法として、FileSystemObjectのOpenTextFileを使用する方法を紹介しました。
テキストファイルの読み込み方法として、ファイルを一気に全部、1行ずつ、1文字ずつ読み込みする方法があります。
状況に応じて、使い分けましょう。
以上です。
最後まで読んでいただきありがとうございました。
この記事をシェアしていただけると喜びます。