Home » FSO・FileSystemObjectの使い方 » TextStreamの行数を取得する

「access vba textstream 行数」
という検索キーワードで、このサイト『インストラクターのネタ帳』へのアクセスがあることに気が付きました。

Scriptingライブラリに含まれるTextStreamオブジェクトの、

行数を取得するには、どのようなコードを書けばいいのかを探していた方による検索でしょう。

検索キーワードに「access」を含んでいますけれど、TextStreamオブジェクトは、Access VBAだけでなく、Excel VBAでもPowerPoint VBAでも操作できるということは、理解しましょう。

[スポンサードリンク]

TextStreamの行数を取得するサンプルマクロ

FileSystemObjectへの参照設定が行われている環境で、以下のSubプロシージャを実行してください。

Sub TextStreamの行数を取得する()
 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

End Sub

上記の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の行数を取得する

「FSO・FileSystemObjectの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.