「access vba textstream 行数」
という検索キーワードで、このサイト『インストラクターのネタ帳』へのアクセスがあることに気が付きました。
Scriptingライブラリに含まれるTextStreamオブジェクトの、
行数を取得するには、どのようなコードを書けばいいのかを探していた方による検索でしょう。
検索キーワードに「access」を含んでいますけれど、TextStreamオブジェクトは、Access VBAだけでなく、Excel VBAでもPowerPoint VBAでも操作できるということは、理解しましょう。
TextStreamの行数を取得するサンプルマクロ
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:=ForAppending)
MsgBox ts.Line
ts.Close
上記のSubプロシージャを実行すると、定数F_PATHに指定した、Cドライブtempフォルダーに存在するtsv_sample_cp932.txtファイルの行数が、メッセージボックスに表示されます。
TextStreamの行数を取得する考え方
FileSystemObjectオブジェクトのOpenTextFileメソッドの引数IOModeに、
IOMode列挙に定義されている定数ForAppending(実際の値は8)を指定して、
TextStreamオブジェクトを取得すれば、
Set ts = fso.OpenTextFile(FileName:=F_PATH, IOMode:=ForAppending)
テキストファイルの最後にカーソルが存在する状態になっているので、行番号を表すTextStream.Lineプロパティの返す値を、
行数と見なすことができます。
IOModeを、
ForReading(実際の値は1)や、
Set ts = fso.OpenTextFile(FileName:=F_PATH, IOMode:=ForReading)
ForWriting(実際の値は2)で、TextStreamオブジェクトを取得した場合、
Set ts = fso.OpenTextFile(FileName:=F_PATH, IOMode:=ForWriting)
TextStream.Lineプロパティが「1」が返すことも、併せて確認しておきましょう。
ステップ実行してオブジェクト変数の中身を確認しましょう
「access vba textstream 行数」
と検索なさった方は、TextStreamがどのようなオブジェクトなのかを、まだイメージできない状態にいらっしゃるはずです。
拙著『いちばんやさしいExcel VBAの教本』でも多用しているローカルウィンドウを、メニュー[表示]-[ローカルウィンドウ]から表示して、TextStreamオブジェクトの格納されているオブジェクト変数tsの中身を確認することをおすすめします。
上記Subプロシージャをステップ実行して、
Set ts = fso.OpenTextFile(FileName:=F_PATH, IOMode:=ForAppending)
が実行されると、下図のようにオブジェクト変数tsからTextStream.Lineプロパティを見ることができます。
最終更新日時:2019-08-02 09:21
Home » FSO・FileSystemObjectの使い方 » TextStreamの行数を取得する