wrote :: 2005.01.18

トップページ > Excel > VBA > FileSystemObject > TextStreamオブジェクト


TextStreamオブジェクト

TextStreamオブジェクトはテキストファイルを表します。TextStreamFileオブジェクトのコレクションはありません。TextStreamオブジェクトには次のプロパティとメソッドが用意されています。

プロパティ
AtEndOfLineファイルポインタが終端かどうかを返します
AtEndOfStreamファイルポインタが終端かどうかを返します
Columnファイルポインタの文字位置を返します
Lineファイルポインタの行位置を返します
メソッド
Closeテキストファイルを閉じます
Read指定した文字数だけ読み込みます
ReadAllすべての文字を読み込みます
ReadLine1行分の文字を読み込みます
Skip指定した文字数だけスキップします
SkipLine1行分スキップします
Write指定した文字を書き込みます
WriteBlankLine改行を書き込みます
WriteLine1行分の文字を書き込みます



・AtEndOfLineプロパティ - 書式:TextStream.AtEndOfLine

ファイル内の読み込み位置を表すファイルポインタが、ファイルの末尾の直前にある場合はTrueを返します。
Sub test72()
    Dim FSO, buf As String
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\Work\Sample.txtの最後まで読み込んだかどうか表示します
    With FSO.GetFile("C:\Work\Sample.txt").OpenAsTextStream
        buf = .ReadLine
        If .AtEndOfLine Then
            MsgBox "最後まで読み込みました"
        Else
            MsgBox "最後まで読み込んでいません"
        End If
        .Close
    End With
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・AtEndOfStreamプロパティ - 書式:TextStream.AtEndOfStream

ファイル内の読み込み位置を表すファイルポインタが、ファイルの末尾の直前にある場合はTrueを返します。
AtEndOfStreamプロパティは、読み取り専用で開かれたTextStreamファイルのみに適用されます。他のファイルの場合は、エラーとなります。
Sub test73()
    Dim FSO, buf As String
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\Work\Sample.txtの最後まで読み込んだかどうか表示します
    With FSO.GetFile("C:\Work\Sample.txt").OpenAsTextStream
        buf = .ReadLine
        If .AtEndOfStream Then
            MsgBox "最後まで読み込みました"
        Else
            MsgBox "最後まで読み込んでいません"
        End If
        .Close
    End With
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・Columnプロパティ - 書式:TextStream.Column

ファイルへの書き込み位置または書き込み位置が、行の先頭から何文字目にあるかを返します。
Sub test74()
    Dim FSO, buf As String
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''次の読み込み位置を表示します
    With FSO.GetFile("C:\Work\Sample.txt").OpenAsTextStream
        buf = .Read(3)
        MsgBox "次は、" & .Column & "文字目から読み込みます"
        .Close
    End With
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・Lineプロパティ - 書式:TextStream.Line

ファイル内の読み込み位置を表すファイルポインタが、ファイル内の何行目にあるかを返します。
Sub test75()
    Dim FSO, buf As String
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''次の読み込み位置を表示します
    With FSO.GetFile("C:\Work\Sample.txt").OpenAsTextStream
        buf = .ReadLine
        MsgBox "次は、" & .Line & "行目から読み込みます"
        .Close
    End With
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・Closeメソッド - 書式:TextStream.Close

開いているテキストファイルを閉じます。
Sub test76()
    Dim FSO, buf As String
    Set FSO = CreateObject("Scripting.FileSystemObject")
    With FSO.GetFile("C:\Work\Sample.txt").OpenAsTextStream
        buf = .ReadLine
        MsgBox "次は、" & .Line & "行目から読み込みます"
        ''ファイルを閉じます
        .Close
    End With
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・Readメソッド - 書式:TextStream.Read(characters)

テキストファイルから指定した文字数だけ読み込みます。
引数charactersには、読み込む文字数を指定します。
Sub test77()
    Dim FSO, buf As String
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\Work\Sample.txtの先頭から2文字を読み込んで表示します
    With FSO.GetFile("C:\Work\Sample.txt").OpenAsTextStream
        buf = .Read(2)
        MsgBox buf
        .Close
    End With
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・ReadAllメソッド - 書式:TextStream.ReadAll

テキストファイル内の全ての文字を読み込みます。
Sub test78()
    Dim FSO, buf As String
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\Work\Sample.txtの全ての文字を読み込んで表示します
    With FSO.GetFile("C:\Work\Sample.txt").OpenAsTextStream
        buf = .ReadAll
        MsgBox buf
        .Close
    End With
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・ReadLineメソッド - 書式:TextStream.ReadLine

テキストファイルから1行分の文字を読み込みます。
行末の改行は読み込みません。
Sub test79()
    Dim FSO, buf As String
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\Work\Sample.txtの先頭から1行読み込んで表示します
    With FSO.GetFile("C:\Work\Sample.txt").OpenAsTextStream
        buf = .ReadLine
        .Close
    End With
    MsgBox buf
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・Skipメソッド - 書式:TextStream.Skip(characters)

指定された数の文字をスキップします。スキップした文字は読み込まれません。
引数charactersには、スキップする文字数を指定します。
Sub test80()
    Dim FSO, buf As String
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''先頭から2文字と、6文字目から4文字を読み込んで表示します
    With FSO.GetFile("C:\Work\Sample.txt").OpenAsTextStream
        buf = .Read(2)
        .Skip 3
        buf = buf & .Read(4)
       .Close
    End With
    MsgBox buf
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・SkipLineメソッド - 書式:TextStream.SkipLine

1行分の文字をスキップします。スキップした文字は読み込まれません。
Sub test81()
    Dim FSO, buf As String
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''1行目と3行目を読み込んで表示します
    With FSO.GetFile("C:\Work\Sample.txt").OpenAsTextStream
        buf = .ReadLine & vbCrLf
        .SkipLine
        buf = buf & .ReadLine
        .Close
    End With
    MsgBox buf
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・Writeメソッド - 書式:TextStream.Write(string)

テキストファイルに文字列を書き込みます。
引数stringには書き込む文字列を指定します。
Writeメソッドは、文字列の後に改行を書き込みません。下のサンプルでは、「田中」と「亨」が同じ行に書き込まれます。
Sub test82()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''「田中」と「亨」を続けて書き込みます
    With FSO.GetFile("C:\Work\Sample.txt").OpenAsTextStream(8)
        .Write "田中"
        .Write "亨"
        .Close
    End With
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・WriteBlankLinesメソッド - 書式:TextStream.WriteBlankLines(lines)

指定した数の改行を書き込みます。
引数linesには書き込む改行の数を指定します。
Writeメソッドでは書き込んだ文字列の後ろに改行を書き込みません。次のサンプルではWriteBlankLinesメソッドで3個の改行を書き込んでいますが、1つ目の改行は「田中」の後ろに書き込まれます。したがって、2行の空行が挿入されることになります。なお最後の「亨」の後ろも改行されません。
Sub test83()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''「田中」と「亨」の間に2行の改行を書き込みます
    With FSO.GetFile("C:\Work\Sample.txt").OpenAsTextStream(8)
        .Write "田中"
        .WriteBlankLines 3
        .Write "亨"
        .Close
    End With
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・WriteLineメソッド - 書式:TextStream.WriteLine([string])

テキストファイルに文字列と改行を書き込みます。
引数stringは省略可能です。書き込む文字列を指定します。省略すると改行だけが書き込まれます。
下のサンプルでは、「田中」と「亨」はそれぞれ1行ごとに書き込まれます。また「亨」の後ろにも改行が書き込まれます。
Sub test84()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''「田中」と「亨」を1行ごとに書き込みます
    With FSO.GetFile("C:\Work\Sample.txt").OpenAsTextStream(8)
        .WriteLine "田中"
        .WriteLine "亨"
        .Close
    End With
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)



[Fileオブジェクト]戻る← | →進む[サンプル]