• ベストアンサー

プログラムについて

 前に「あいうえお」のような一行を表示させるプログラムについてお聞きしたんですけど、今度は一行目に「あいうえお」二行目に「かきくけこ」三行目に「1234567890」四行目に「abcd」のように一度に四行、またはそれ以上を表示させたいんです。 それで次のようにプログラムを作ったんですが最後の行のabcdが表示されるだけでした。 Private Sub Command1_Click() Dim strWork As String Open "c:\mydata\test.txt" For Input As #1 Do While Not EOF(1) Line Input #1, strWork Loop Close #1 MsgBox strWork End Sub 全部表示させるにはどうすればいいかお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

strWork が更新されて、最後の一文だけの情報になってます。 Private Sub Command1_Click() Dim strWork As String Open "c:\mydata\test.txt" For Input As #1 Do While Not EOF(1) Line Input #1, strWork MsgBox strWork Loop Close #1 End Sub メッセージボックスの場所を変えてみましょう

mos21
質問者

お礼

ありがとうございました、strworkが更新されてたんですか(^^; これからも勉強します。

その他の回答 (3)

  • yanmaa
  • ベストアンサー率45% (207/457)
回答No.4

まずは回答 Private Sub Command1_Click() Dim strWork As String Dim strInputBuff As String Open "c:\mydata\test.txt" For Input As #1 strWork = "" Do While Not EOF(1) Line Input #1, strInputBuff strWork = strWork & strInputBuff & vbCrLf Loop Close #1 MsgBox strWork End Sub ここから説明 Do Line Input #1, strWork Loop とするとループ1回目の"strWork"は「あいうえお」で ループ2回目は「かきくけこ」です、3回目は「1234567890」、4回目は「abcd」が各々上書き設定されます。 5回目はEOFの為ループを抜けます。 よって最後の「abcd」がメッセージボックスとして表示されるという事です。 ですから回答のように一度別の変数へ追加しながら代入する必要があります。なお、「vbCrLf」は改行です。

mos21
質問者

お礼

丁寧な説明ありがとうございます。vbCrLfは改行なんですね(^^; ありがとうございました。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

こんにちは。maruru01です。 このコードではtest.txtの最後の行しかstrWorkに格納されません。 1行ずつ読んでつなげていく必要があります。 次のようにします。 なお、ファイル番号は、FreeFile関数を使った方が確実です。 では。 Private Sub Command1_Click()   Dim temp As String   Dim strWork As String   Dim fileNum As Integer   fileNum = FreeFile   strWork = ""   Open "c:\mydata\test.txt" For Input As #fileNum   Do While Not EOF(fileNum)     Line Input #fileNum, temp     strWork = strWork & temp & vbCrLf   Loop   Close #fileNum   MsgBox strWork End Sub

mos21
質問者

お礼

こんにちは^^こういうやりかたもあったんですね、ありがとうございました。FreeFile関数についてわからないので学習しようと思います。

  • sienna
  • ベストアンサー率35% (51/145)
回答No.1

ようするにテキストファイルの中身を メッセージボックスに表示したいという事ですよね。 DO WHILE NOT EOF(1) LINE INPUT #1,BUFF1 BUFF1=BUFF1+CHR(13)+CHT(10) BUFF2=BUFF2+BUFF1 LOOP 参考まで。

mos21
質問者

お礼

アドバイスありがとうございました。そうなんです、テキストファイルの中身を メッセージボックスに表示したいんですがうまくいかなくて(^^; やってみますね、ありがとうございました。

関連するQ&A