TextStreamクラスのReadAllメソッド
TextStreamクラスのReadAllメソッドは、FileSystemObjectクラスのCreateTextFileメソッドやOpenTextFileメソッドで開いたファイルの内容を全て読み取り文字列として取得します。
ファイルサイズが大きい場合や固定長のレコードで構成されている場合はReadLineメソッドやReadメソッドで少しずつ読み取ることを採用しますが、そうでない場合はReadAllメソッドを使って一度にファイルデータをすべて読み取る方が都合がいい場合が結構あります。
ReadAllメソッドを使う一番の利点は、ループ処理が不要になり処理が単純になることです。
TextStreamクラスの他のメソッドやプロパティは「FileSystemObjectとTextStreamのメソッド・プロパティ一覧」をご参照ください。
構文
Function ReadAll() As String
戻り値として、読み込んだ文字列を返します。
事前設定
以下のサンプルコードでは参照設定でFileSystemObjectクラスを利用できるようにしています。
FileSystemObjectクラスを利用するには、事前にVBA画面→ツールメニュー→参照設定、を選択し、参照設定ダイアログで「Microsoft Scripting Runtime」にチェックを付けます。
詳細は「VBAでのFileSystemObjectとTextStreamの使い方」の事前設定をご参照ください。
サンプルコード
一般的なテキストファイルのデータを全て取得するサンプルです。
テキストファイルを開いて、ReadAllメソッドを使って全てのデータを読み取り、ファイルを閉じるコードです。
ReadAllメソッドはファイルデータをすべて読み取るため、ReadLineメソッドやReadメソッドのようにファイルデータを少しずつ読み取るためのループ処理が不要になり処理が単純になります。
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 |
Sub TextStreamReadAll() On Error GoTo ERR_LABEL Dim fso As New FileSystemObject '// FileSystemObjectクラス Dim ts As TextStream '// TextStreamクラス Dim sFilePath '// ファイルパス Dim sData '// ファイルデータ '// ファイルパスを設定 sFilePath = "C:\aaa.txt" '// ファイルを開く Set ts = fso.OpenTextFile(Filename:=sFilePath, IOMode:=ForReading, Create:=False, Format:=TristateFalse) '// ファイルデータを取得 sData = ts.ReadAll Debug.Print sData '// ファイルを閉じる ts.Close ERR_LABEL: '// エラー発生時 If Err.Number <> 0 Then '// エラー内容を出力 Debug.Print Err.Number & " " & Err.Description End If End Sub |
実行結果
ファイルデータをイミディエイトウィンドウに出力します。