• ベストアンサー

プログラムについて

 前に「あいうえお」のような一行を表示させるプログラムについてお聞きしたんですけど、今度は一行目に「あいうえお」二行目に「かきくけこ」三行目に「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 全部表示させるにはどうすればいいかお願いします。

  • mos21
  • お礼率46% (128/273)

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

  • ベストアンサー
  • 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

  • 表示プログラムについて

    テキストの中の”あいうえお”のような文章を表示させるプログラムを作りたいんですが Private Sub Command1_Click() Open "c:\mydata\test.txt" For Input As #1 End Sub Private Sub Command2_Click() Close #1 End Sub では表示されませんでした。何がおかしいかとかどうすればいいか教えてください。お願いします。

  • VB6.0 でのテキストファイルの表示

    .net では、readstream でがばっととって、テキストボックス(読み取り専用)に表示しました。 これと同様のことをVB6.0でチャレンジしたのですが、テキストボックスに表示されるのは最初の一行だけでした。マルチラインのテキストボックス設置後 Private sub command1_click() Dim data as string Open "ファイルパス" for input as #256 Do while EOF(256) line input #256, data loop text1.text=data としたところ、ファイル内の最初の一行目に位置する「%」のみが表示されました。 readonlyもつかえないみたいなので、Listを使うのがよいのでしょうか?ご教示下さい

  • ラベルに全てのテキストデータを読み込みたい

    メモ帳(.txt)に AAAA BBBB CCCC と書いて、これら3行をラベルに表示させたいのです。 Private Sub Form_Load()  Dim myText As String  Open "C:\myFile.txt" For Input As #1 Do While Not EOF(1) Input #1, myText Loop   Close #1  Label1.Caption = myText End Sub 上記のコードだと1行目のAAAAしか表示されません(泣) どなたかご指導宜しくお願いします。

  • プログラムについて

    今このようなプログラムを作っているのですが、わからなくて困っています。 Private Sub Command1_Click() Command1.Enabled = False 'タイマー無効 Text1.Text = GetSource() Command1.Enabled = True 'タイマー有効 Msg = "アドレスを入力して下さい" Title = "URL入力" Ret = InputBox(Msg, Title, "") End Sub Function GetSource() As String Dim strBuf As String Dim strURL As String strURL = "http://www.microsoft.com/japan/ms.htm" strBuf = Inet1.OpenURL(strURL) 'ファイル内容を取得 GetSource = strBuf End Function InputBoxにアドレスを書いてOKを押すと別ウィンドウでソースが表示されるプログラムを作りたいんです。お願いします。

  • テキストの読込について

    あいうえお かきくけこ さしすせそ ↑のような中身のテキストファイルを読み込んで、 あいうえおかきくけこさしすせそ ↑のように、改行をなくして新規テキストに出力する プログラムを作成中なのですが、上手くいかず 困っています。 改行を無視した取り込みは出来るのでしょうか? もしくは、LineInput等で読み込んだ後、 改行を取り除くような処理をするのでしょうか? 下記は、現在まで作ったプログラムなのですが、 これだと、改行も同時に取り込んでしまっています。 Private Sub Command1_Click() Dim sData As String Dim FileName As String CommonDialog1.Filter = "テキスト|*.txt|全てのファイル|*.*" CommonDialog1.ShowOpen FileName = CommonDialog1.FileName Open FileName For Input As #1 Do Until EOF(1) Line Input #1, sData Loop Close #1 環境は、WindowsXP、VB6.0エンタープライズです。 以上、宜しくお願い致します<(_ _)>

  • 設定プロパティについて

    Sub InStrSample1() Dim myData As String Dim i As Integer myData = "*******@projecta.co.jp" i = InStr(myData, "@") MsgBox Left(myData, i - 1) End Sub ネット上で上のようなプログラムを見つけ、VBで書いてみたら何も動きませんでした。ダイアログボックスに*******と表示されるらしいんですが、その設定プロパティがわかりません。お願いします。

  • VB2013でのプログラム作成でつまづきました

    初めまして ご質問です 会社にて、職場改善のため VB2013でプログラムを作成していますが PCに詳しいのが自分しかいなく、指名されました。。。 もちろん自作PCとか作れるぐらいですが プログラムなんてやったことないし困っています 職場にプログラム専門の方がいるので教育を受けていますが 2.3回教えてもらって  「windowsの電卓を作ろう」と言われました 電卓作成は、初心者用の題材らしいですが とりあえず教えてもらった事を駆使し まずは、テキストボックスとテキストボックスに数字を入れ その二つを +や-ボタンを押し =ボタンを押すと、3つ目のテキストボックスに表示させるという 簡単なプログラムは、なんとかできましたが windowsぽくすると 例 11 + 12 - 9 とテキストに表示され =ボタンを押すと 表示が消え 計算結果が表示されます いまの問題 ・整数と文字列を表示させ、計算だけさせる ・変数宣言、IF、Serectしか教わってない(それだけでできる言われた笑) ・まだ、いまいちわかっていないため 詳しく知りたい 無論、教えてもらったコードをそのまま使いたいわけじゃなく どーいう流れで、どーいう風にというのを理解したいです 結局は自分が理解して、少しずつやらないといけないので 詳しい方、教えてください。 現在なにもできてないコードです ここにどう埋めるか教えてほしいです ------------------------------------------------------------------------------ Option Explicit On Public Class Form Public oboe As String '押されたボタンが数値以外を覚える変数 Public befor As String '押されたボタンが数値の場合 覚える変数 Public anser As Integer ' 計算結果を保存する 変数 Public number As Integer '入力された数値を保存する 変数 Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click '1 befor = "1" ans.Text &= "1" End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click '2 befor = "2" ans.Text &= "2" End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click '3 befor = "3" ans.Text &= "3" End Sub Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click 'たし算 oboe = "+" ans.Text &= "+" number = befor + ans.Text End Sub Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click '掛け算 End Sub Private Sub Button4_Click_1(sender As Object, e As EventArgs) Handles Button4.Click '計算 End Sub Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click 'CLEAR End Sub Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click '引き算 End Sub Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click '割り算 End Sub Private Sub ans_TextChanged(sender As Object, e As EventArgs) Handles ans.TextChanged

  • テキストの読み書きがうまくいきません。

    次の様なプログラムですが、保存したデータと読み込んだデータが一致しません。更に調べたら、保存したときに改行コードが含まれているようです。改行を入れないようにするには、どうしたら良いでしょうか。 Option Explicit Public A As String Public B As String Private Sub Cmd読込_Click() Open App.Path & "\設定.ini" For Input As #1 Text1.Text = StrConv(InputB(LOF(1), #1), vbUnicode) Close #1 A = Text1.Text End Sub Private Sub Cmd比較_Click() If A = B Then MsgBox ("同じ") Else MsgBox ("違う") End Sub Private Sub Cmd保存_Click() Open App.Path & "\設定.ini" For Output As #1 Print #1, Text1.Text Close #1 B = Text1.Text End Sub

  • プログラムの意味を教えてください

    ここで繰り返しについてのプログラムについて質問させていただいたものです。 いろんな方にプログラムについて教えていただきありがとうございました。コピーして貼り付けしてプログラムは完成したのですが、内容もわからないままとかいやなので下記に貼り付けしてあるプログラムを簡単にでもかまいませんので説明してほしいのです。内容を理解したうえで先に進みたいので是非わかる方よろしくお願いします。 Private Sub Command1_Click()   Label1.Caption = NumKanji(Text1.Text) End Sub Private Function NumKanji(ByVal Arg As String) As String   Dim Idx As Long   For Idx = 1& To 10&     Arg = Replace$(Arg, _       Mid$("1234567890", Idx, 1&), _       Mid$("一二三四五六七八九〇", Idx, 1&) _     )   Next   NumKanji = Arg End Function

  • 標準モジュールとイベントの質問

    初めて質問します。 ビジュアルベーシックで標準モジュールで ボタンのクリックイベントを実行したいのですが どうやってプログラムすればいいんでしょうか? 今の会社に入っていきなりVBの仕事させられて とっても困っています。 Private Sub Frm1Command1_Click() Call Module1.Frm1Command1_Click End Sub こんな書き方じゃなくて、標準モジュール内で Public Sub Command1_Click() MsgBox "sine" End Sub って書いて実行できるようにしなくてはダメなんです。 どうすればいいんでしょうか? もしかして無理なんでしょうか? これ、上司の嫌がらせだったらイヤですね・・・。