Scriptingライブラリに含まれるTextStreamオブジェクトをなかなか理解できないという方には、ReadLineメソッドで
テキストファイルを1行ごとに読み込む様子を、ローカルウィンドウで確認することをオススメします。
TexStream.ReadLineを確認するサンプルマクロ
まずはCドライブtempフォルダーにTSVファイルtsv_sample_cp932.txtファイルを用意して、FileSystemObjectへの参照設定が行われている環境で、以下のSubプロシージャを実行してください。
Const F_PATH = "C:\temp\tsv_sample_cp932.txt"
Dim fso As Scripting.FileSystemObject
Set fso = New Scripting.FileSystemObject
Dim ts As Scripting.TextStream
Set ts = fso.OpenTextFile(FileName:=F_PATH, IOMode:=ForReading)
Dim rcd As String
Do Until ts.AtEndOfStream
rcd = ts.ReadLine
MsgBox rcd
Loop
ts.Close
End Sub定数F_PATHに指定した、tempフォルダーにTSVファイルtsv_sample_cp932.txtファイルのデータが、1行ごとにメッセージボックスに表示されます。
例えば、TSV形式のtsv_sample_cp932.txtが、以下のような状態のときに、
上記のSubプロシージャを実行すると、下図のように1行目のデータから順番にメッセージボックスに表示されます。
ステップ実行しながら変数の中身を確認しましょう
Do Until~Loopの中でTextStream.ReadLineメソッドを呼ぶことで、1行ごとに読み込まれることを確認したら、拙著『いちばんやさしいExcel VBAの教本』でも多用している、ローカルウィンドウを使って、変数の中身を確認しながらステップ実行することもオススメします。
特に確認すべきは、
Dim rcd As String
Do Until ts.AtEndOfStream
rcd = ts.ReadLine
MsgBox rcd
Loop
のDo Until~Loopが繰り返されるたびに、TextStream.ReadLineメソッドが実行され、String型の変数rcdにtsv_sample_cp932.txtのデータが1行ごとに読み込まれる様子と、
Scripting.TextStream型のオブジェクト変数tsから見ることのできる、カレント行番号を表すLineプロパティの値です。
拙著のp.163以降で、For~Nextループのカウンター変数に注目しながらステップ実行する実習を、何度も行っています。
同じ要領で、変数の中身をしっかりと意識しながら、上記Subプロシージャをステップ実行してください。
Home » FSO・FileSystemObjectの使い方 » TextStream.ReadLineの戻り値をローカルウィンドウで確認しましょう