前に「あいうえお」のような一行を表示させるプログラムについてお聞きしたんですけど、今度は一行目に「あいうえお」二行目に「かきくけこ」三行目に「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
全部表示させるにはどうすればいいかお願いします。
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
メッセージボックスの場所を変えてみましょう
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
こんにちは^^こういうやりかたもあったんですね、ありがとうございました。FreeFile関数についてわからないので学習しようと思います。
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」は改行です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) VBA Bookの表示、非表示 1 2022/09/16 20:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミングについて。 1つ...
-
画面を強制的に再描画させる方法
-
DoEventsが必要な理由について
-
エクセルの当番表を作っていま...
-
VBAで3秒だけ時間を止めたい
-
ループ内での条件処理
-
DOSコマンドのループ内のTIMEコ...
-
アクティブセルから、A列最終行...
-
VBA Dir関数でファイルをループ...
-
VBA for i=1 to lastrow
-
UWSCの終了の仕方
-
GIFアニメをループさせたくない
-
while(*s++=*t++)の判定は?
-
範囲指定したセルを1つずつ飛...
-
どなたかこのプログラミングを...
-
Javascriptでalertを大量のルー...
-
テキストボックスの名前に変数...
-
vbscriptでIE自動入力(途中で...
-
乱数の桁数指定、または範囲指定。
-
Java 南京錠
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
VBAで3秒だけ時間を止めたい
-
VBAでの一時停止と再開の方法
-
どなたかこのプログラミングを...
-
Escキーを押すと、中断する時と...
-
UWSCの終了の仕方
-
エクセルの当番表を作っていま...
-
VBA for i=1 to lastrow
-
「偶数・奇数の和」のフローチ...
-
アクティブセルから、A列最終行...
-
DoEventsが必要な理由について
-
vb.netからエクセル関数書き込み
-
GIFアニメをループさせたくない
-
DOSコマンドのループ内のTIMEコ...
-
範囲指定したセルを1つずつ飛...
-
流れ図(フローチャート)が分か...
-
乱数の桁数指定、または範囲指定。
-
テキストボックスの名前に変数...
-
CSVファイルの特定の行だけを読...
-
vb.netです。2次元配列の要素を...
おすすめ情報