「Do Until txt.AtEndOfStream」で読み込むとテキストファイルの中身全て(広瀬川.....萩原朔太郎)が読み込まれますが、「Do Until txt.AtEndOfLine」にすると「広瀬川.....もとまらず。」と最後の1行が読み込まれませんが、どういった違いなのでしょうか?
Sub ReadText2()
Dim fs As Scripting.FileSystemObject
Dim txt As TextStream
Dim path As String
Dim stEachline As String
path = ThisWorkbook.path & "\fsosample\textfile1.txt"
Set fs = New Scripting.FileSystemObject
Set txt = fs.OpenTextFile(filename:=path, IOMode:=ForReading, create:=True, _
Format:=TristateUseDefault)
Do Until txt.AtEndOfStream
stEachline = txt.ReadLine
Debug.Print stEachline
Loop
txt.Close
Set txt = Nothing
Set fs = Nothing
End Sub
2015/11/25 01:19
ゲストさんのコメント
(コメントID: 3106)
受講生 さん:
Do Until ... は条件を満たしたところで Do Loop の中身には入りませんから、「Do Until txt.AtEndOfLine」にすると最後の行を取得できた段階で、 Do Loop の中には入らない、つまりスキップされます。
改行よりもテキストストリームの終端のほうが後にありますので、「Do Until txt.AtEndOfStream」にすると最後の改行までも問題なく Do Loop の中で処理されます。
この説明でご理解いただけそうでしょうか?
>「Do Until txt.AtEndOfStream」で読み込むとテキストファイルの中身全て(広瀬川.....萩原朔太郎)が読み込まれますが、「Do Until txt.AtEndOfLine」にすると「広瀬川.....もとまらず。」と最後の1行が読み込まれませんが、どういった違いなのでしょうか? > >
Sub ReadText2()
> Dim fs As Scripting.FileSystemObject
> Dim txt As TextStream
> Dim path As String
> Dim stEachline As String
>
> path = ThisWorkbook.path & "\fsosample\textfile1.txt"
> Set fs = New Scripting.FileSystemObject
>
> Set txt = fs.OpenTextFile(filename:=path, IOMode:=ForReading, create:=True, _
> Format:=TristateUseDefault)
>
> Do Until txt.AtEndOfStream
> stEachline = txt.ReadLine
> Debug.Print stEachline
> Loop
>
> txt.Close
> Set txt = Nothing
> Set fs = Nothing
>End Sub
受講生さんの投稿
(投稿ID: 1803)
ゲストさんのコメント
(コメントID: 3106)
Do Until ... は条件を満たしたところで Do Loop の中身には入りませんから、「Do Until txt.AtEndOfLine」にすると最後の行を取得できた段階で、 Do Loop の中には入らない、つまりスキップされます。
改行よりもテキストストリームの終端のほうが後にありますので、「Do Until txt.AtEndOfStream」にすると最後の改行までも問題なく Do Loop の中で処理されます。
この説明でご理解いただけそうでしょうか?
>「Do Until txt.AtEndOfStream」で読み込むとテキストファイルの中身全て(広瀬川.....萩原朔太郎)が読み込まれますが、「Do Until txt.AtEndOfLine」にすると「広瀬川.....もとまらず。」と最後の1行が読み込まれませんが、どういった違いなのでしょうか?
>
>
受講生さんのコメント
(コメントID: 3116)
丁寧な説明をありがとうございます。
納得することができました。
ゲストさんのコメント
(コメントID: 3124)
よかったです。ひきつづきよろしくお願いいたします。
>小川先生
>
>丁寧な説明をありがとうございます。
>
>納得することができました。