
TextStreamオブジェクトのLineプロパティについてです。
Lineプロパティ
概要
ファイルの行番号を返します。
構文
TextStreamObject.Line
VBAサンプル
ファイルの最終行番号を取得
まずFileSystemObjectをセットして、FileSystemObjectのOpenTextFileメソッドでForReading(読込モード)に設定して指定したファイルを開きTextStreamオブジェクトが返るのでセットします。
あとはDo Until~LoopでTextStreamオブジェクトのAtEndOfStreamプロパティがTrueになるまで、TextStreamオブジェクトのReadLineメソッドで1行下げ、ファイルの末尾まで繰り返し、TextStreamオブジェクトのLineプロパティで行番号を取得するとそれが最後の行番号になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | Sub test() '変数 Dim fso As Object, ts As Object 'FileSystemObjectをセット Set fso = CreateObject("Scripting.FileSystemObject") 'FileSystemObjectのOpenTextFileメソッドでTextStreamオブジェクトをセット Set ts = fso.OpenTextFile("D:\sample\test.txt", ForReading) 'TextStreamオブジェクトのAtEndOfStreamプロパティがTrueになるまで繰り返す Do Until ts.AtEndOfStream '1行下げる ts.ReadLine Loop '最終行を取得 Debug.Print ts.Line ts.Close End Sub |
【結果】
ファイルの最終行番号が10が取得できます。
検索文字が含まれる行番号を取得
If文とLike演算子を使用した応用で、123が含まれている行番号を取得します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | Sub test2() '変数 Dim s: s = "*123*" '←検索する文字(ワイルドカード使用) Dim fso As Object, ts As Object Dim cnt As Integer 'FileSystemObjectをセット Set fso = CreateObject("Scripting.FileSystemObject") 'FileSystemObjectのOpenTextFileメソッドでTextStreamオブジェクトをセット Set ts = fso.OpenTextFile("D:\sample\test.txt", ForReading) 'TextStreamオブジェクトのAtEndOfStreamプロパティがTrueになるまで繰り返す Do Until ts.AtEndOfStream 'Like演算子で判定 If ts.ReadLine Like s Then '行番号を取得 Debug.Print ts.Line - 1 End If Loop ts.Close End Sub |
【結果】
123が含まれる行番号が取得できます。