ray88’s diary

お仕事で困ったとき用の自分用の覚書

VBA ファイルシステムオブジェクト・TextStreamオブジェクトの主なプロパティとメソッド

※TextStreamオブジェクトを取得するにはこちら↓
VBA ファイルシステムオブジェクト・OpenTextFile - ray88’s diary
※FileSystemObjectのプロパティとメソッド一覧↓
VBA FileSystemObjectの主なプロパティとメソッド - ray88’s diary

■TextStreamオブジェクトの主なプロパティ

メンバー 読取専用 説明
Property AtEndOfLine As Boolean TextStreamオブジェクトのファイルポインタが行末にあるかどうかを表すブール値
Property AtEndOfStream As Boolean TextStreamオブジェクトのファイルポインタがファイルの末尾にあるかどうかを表すブール値
Property Column As Long TextStreamオブジェクトのファイルポインタの列番号を表す整数
Property Line As Long TextStreamオブジェクトのファイルポインタの行番を表す整数

■TextStreamオブジェクトの主なメソッド

メンバー 説明
Sub Close() TextStreamファイルを閉じる
Function Read(Characters As Long) As String TextStreamファイルからCharactersで指定した文字数の文字列を読み取る
Function ReadAll() As String TextStreamファイルから全ての文字列を読み取る
Function ReadLine() As String TextStreamファイルから1行分の文字列を読み取る
Sub Skip(Charecters As Long) TextStreamファイルについてCharactersで指定した文字数をスキップする
Sub SkipLine() TextStreamファイルについて1行分をスキップする
Sub Write(Text As String) TextStreamファイルに文字列Textを書き込む
Sub WriteBlankLines(Lines As Long) TextStreamファイルにLinesで指定した行数の改行文字列を書き込む
Sub WriteLine([Text As String]) TextStreamファイルに文字列Textと改行文字を書き込む

■サンプルコード

Sub ReadTextFile()
    
Dim Fso As Object           'ファイルシステムオブジェクト格納用
Dim St As Object            'テキストストリームオブジェクト格納用
Dim buf As Variant          '1行分の文字列格納用
Dim dataArray As Variant    '1行分の各項目を配列にして格納
Dim targetPath As String    '対象テキストファイルパス

'FileSystemObjectをインスタンス化
Set Fso = CreateObject("Scripting.FileSystemObject")

'読込対象テキストファイルパス
targetPath = "C:\デスクトップ\ダミー.CSV"
'読み取り専用でファイルを読み取り
Set St = Fso.OpenTextFile(targetPath, 1, False, -2)

  'ファイルの最後まで繰り返し
  Do Until St.AtEndOfStream
         '1行分のデータを読み取り
       buf = St.ReadLine
       '1行分のデータをカンマ区切りで配列に格納
       dataArray = Split(buf, ",")
        '先頭行(項目名)以外の場合、値確認のログ出力
       If St.Line <> 0 Then
           MsgBox St.Line & "行目:" & dataArray(0) & " :" & dataArray(1) & " :" & dataArray(2)
       End If
        '3行目以降は繰り返し処理を抜ける
       If St.Line > 3 Then
           Exit Do
       End If
Loop

  'ファイルを閉じる
  St.Close
End Sub