TextStreamクラスのSkipLineメソッド
TextStreamクラスのSkipLineメソッドは、FileSystemObjectクラスのCreateTextFileメソッドやOpenTextFileメソッドで開いたファイルの読み込み位置を次の行の先頭に移動させます。
移動できるのは先頭から終端方向のみで、逆方向の終端から先頭側に向かって移動させることはできません。
TextStreamクラスの他のメソッドやプロパティは「FileSystemObjectとTextStreamのメソッド・プロパティ一覧」をご参照ください。
構文
Sub SkipLine()
引数や戻り値はありません。
事前設定
以下のサンプルコードでは参照設定でFileSystemObjectクラスを利用できるようにしています。
FileSystemObjectクラスを利用するには、事前にVBA画面→ツールメニュー→参照設定、を選択し、参照設定ダイアログで「Microsoft Scripting Runtime」にチェックを付けます。
詳細は「VBAでのFileSystemObjectとTextStreamの使い方」の事前設定をご参照ください。
サンプルコード
一般的なテキストファイルを参照する処理をサンプルで書いています。
テキストファイルは1行目が見出し行で、2行目以降はランダムにD:ではじまるデータ行と、C:ではじまるコメント行がある以下のような構成になっているとします。
見出し行
D:データ行
D:データ行
C:コメント行
D:データ行
C:コメント行
D:データ行
データ行だけを参照したい場合は1行目の見出し行とコメント行を読み飛ばす必要があります。それをSkipLineで行います。
テキストファイルを開いて、2文字読み取り、データ行かコメント行かを判定して、データ行であればイミディエイトウィンドウに出力し、ファイルを閉じるコードです。
テキストファイルの全行を読み込む場合はファイル終端を判定するAtEndOfStreamプロパティを使ってテキストファイルの全行ループを行います。
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
Sub TextStreamSkipLine() On Error GoTo ERR_LABEL Dim fso As New FileSystemObject '// FileSystemObjectクラス Dim ts As TextStream '// TextStreamクラス Dim sFilePath '// ファイルパス Dim sRead '// ファイルデータ '// ファイルパスを設定 sFilePath = "C:\aaa.txt" '// ファイルを開く Set ts = fso.OpenTextFile(Filename:=sFilePath, IOMode:=ForReading, Create:=False, Format:=TristateFalse) '// 1行目の見出し行をスキップ Call ts.SkipLine Dim i i = 1 '// ファイルを全行ループ Do While ts.AtEndOfStream <> True '// ファイルから2文字取得 sRead = ts.Read(2) '// データ行の場合 If sRead = "D:" Then '// データ部分を取得 sRead = ts.ReadLine Debug.Print sRead '// コメント行でない場合 Else '// コメント行をスキップ Call ts.SkipLine End If i = i + 1 Loop '// ファイルを閉じる ts.Close ERR_LABEL: '// エラー発生時 If Err.Number <> 0 Then '// エラー内容を出力 Debug.Print Err.Number & " " & Err.Description End If End Sub |
実行結果
ファイルの内容は以下とします。
————
見出し
D:1234567
C:コメント
D:ABCD
D:EFGH
D:IJKKKKK
C:コメント行です
D:6666665555555
C:ここもコメント
D:aaaaa
————
上記関数を実行するとD:で始まるデータ行のみがイミディエイトウィンドウに出力されます。
————
1234567
ABCD
EFGH
IJKKKKK
6666665555555
aaaaa
————