- ベストアンサー
Visual Basic 6.0でファイル内容をリストボックスに出力する方法
- Visual Basic 6.0のプログラムで、ファイルから読み込んだ内容をリストボックスに出力する方法について質問があります。
- 質問者は「修飾子が不正です」というコンパイルエラーが発生し、実行できない状況に困っています。
- 質問者はファイルの内容を最後まで読み込んでリストボックスに表示するために、どのようなコードを記述すればよいかわかりません。初心者なので、詳しい解説をお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
「リストボックスに、ファイルから読み込んだ内容を出力する」には「TextBox1」は不要だと思うので、エラーの行を削除してみてください。
その他の回答 (3)
- kkkkkm
- ベストアンサー率66% (1733/2603)
StreamReaderクラスを使用してみてはいかがでしょう。 文字コードを指定してテキストファイルを読み込む https://dobon.net/vb/dotnet/file/readfile.html
- emsuja
- ベストアンサー率50% (1073/2133)
補足拝見しましたが・・・・ 申し訳ございませんが、エラーが発生するならば、そのエラーの発生個所までは正常に動作して、ご指摘のエラーヶ所でエラーが発生するソースを提示いただけませんでしょうか? 補足で提示されたソースでは前回私が指摘した intNo と #FileNumber の件も未解決のままですし、今回のソースでも起動直後にご指摘の行のもっと手前でエラーが発生してしまいます。 今回ご提示のソースを見ると ' ファイルが存在しているかどうか確認する If Dir(txtReadFile) = "" Then Call MsgBox("ファイルは存在しません") End If の行など、ファイルが見つからなくても、「ファイルは存在しません」のメッセージを出してそのまま走っていますので、次の Open ステートメントでエラーが出るのは必至です。 まぁ それ以前の問題としてまだ何か不足しているモジュールがある感じがしますね。 最初にご提示いただいた、エラー現象だけは前回私が提示した修正で解決すると思うのですが、それではいけないのでしょうか?
- emsuja
- ベストアンサー率50% (1073/2133)
どこかからコピーしてきたプログラムなのでしょうか? 少々辛めのコメントになりますが、提示されたプログラムをそのまま貼り付けた上で ListBox1 TextBox1 をフォームに張り付けて動作させても質問者殿が ←★エラー と書かれた行までたどり着けませんでした。(もっと前の行でエラー停止します) そもそも、一行目で intNo = FreeFile() と書いてあるにも関わらず 二行目で Open txtReadFile For Input As #iFileNumber と書いてあること自体意味不明です #iFileNumber には、もっと別な場所で数値が入れられているのでしょうか? トラブルの元ですのでそのようなことするべきではありません。 とりあえず一応動作するようには書き直したのですが、TextBox1 の使い方が今一つ分かりません。 Sub test() txtReadFile = "E:\TestData.txt" ' 【当方のテスト用ファイルを指定する行を追加】 intNo = FreeFile() Open txtReadFile For Input As intNo '#iFileNumber 【修正】 Dim stResult As String ' ファイルを最後まで読み込む Do While (Not FileSystem.EOF(intNo)) ' 'iFileNumber)) 【修正】 Dim stBuffer As String Line Input #intNo, stBuffer ' #iFileNumber, stBuffer 【修正】 stResult = stResult & stBuffer & vbNewLine 'ファイル内容をリストボックスへ表示 ListBox1.AddItem stBuffer ', stResult TextBox1.Text = txtReadFile '.ReadToEnd ' ←★エラー 【修正】 Loop Close intNo ' #iFileNumber 【修正】 End Sub
補足
emusuja様 回答ありがとうございます。 情報が少なく申し訳ありませんでした。 一部分を切り取って質問してしまいました。 下記が現在のコードです。 Private Sub cmd_Click() Dim iFileNumber As Integer iFileNumber = FileSystem.FreeFile() Dim cFso As FileSystemObject Set cFso = New FileSystemObject ' ファイルパスからファイル名を取得する Dim txtReadFile As String txtReadFile = cFso.GetFileName("c:\tmp\read.txt") ' 不要になった時点で参照を解放する (Terminate イベントを早めに起こす) Set cFso = Nothing ' ファイル名を表示する Call MsgBox(stFileName) ' ファイルを開く txtReadFile = Me.txtReadFile.Text ' ファイルが存在しているかどうか確認する If Dir(txtReadFile) = "" Then Call MsgBox("ファイルは存在しません") End If ' ファイルオープン intNo = FreeFile() Open txtReadFile For Input As #iFileNumber Dim stResult As String ' ファイルを最後まで読み込む Do While (Not FileSystem.EOF(iFileNumber)) Dim stBuffer As String Line Input #iFileNumber, stBuffer stResult = stResult & stBuffer & vbNewLine 'ファイル内容をリストボックスへ表示 ListBox1.AddItem stBuffer, stResult TextBox1.Text = txtReadFile.ReadToEnd ←★エラー Loop Close #iFileNumber Call MsgBox(stResult) End Sub
お礼
リストボックスの名前を変更し、テキストボックスのエラー行を消したらうまくできました! ありがとうございます!
補足
回答ありがとうございます。 エラーの行を削除してみたところ、 ListBox1.AddItem stBuffer, stResultにて、 オブジェクトが必要です。とエラーになってしまいます。