- 締切済み
リストボックスの内容を テキストファイルに出力
エクセル vba初心者です。 (1)ini fileからデータを取得 (2)その内容のリストボックスに表示 (3)リストボックス内容をテキストボックスに出力 (2)、(3)がわかりません。 なんとなくやってたら余計にわからなくなりました。助けてください。 Private Sub CommandButton1_Click() '読込み(1)を押した時の処理 Dim listbox As String Dim strL_Data As String '取得した値 Dim n As Integer n = FreeFile ListBox1.Clear Open "C:\filepath.ini" For Input As #n Do While Not EOF(n) Line Input #n, listbox ListBox1.AddItem listbox Loop Close #n End Sub Private Sub CommandButton2_Click() '書込み(1)を押した時の処理 Dim listbox As String Dim strL_Data As String '取得した値 Dim n As Integer n = FreeFile Open "c:\example.txt" For Output As #n Print #n, strL_Data Close #n End Sub よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- K-Sogacchi
- ベストアンサー率53% (50/93)
ANo.1です。 あー…ANo.2氏のを見て気が付いたのですが、 「出力は選択された1行」という可能性もありますな… その場合は、私が書いた「ループが必要」云々は忘れてください。 (何にせよ、結局出力したいのはどういうデータなのかという説明は 欲しいですが)
- imogasi
- ベストアンサー率27% (4737/17069)
6.0系列か、.NETの質問なのか書かないと最近は正確な解答にならないと思う。6.0系列と推定して ーー 前半は質問のコードを見ずに同じようなコードでうまく行きました。 テキストファイルからリストボックスにアイテムを表示 私の場合aaa6.txtの場合 Private Sub CommandButton2_Click() Dim strL_Data As String '取得した値 Dim n As Integer n = FreeFile ListBox1.Clear Open "C:\Documents and Settings\XXXX\My Documents\aaa6.txt" For Input As #n Do While Not EOF(n) Line Input #n, strL_Data MsgBox strL_Data ListBox1.AddItem strL_Data Loop Close #n End Sub ーー >書込み(1)を押した時の処理 は質問をするものにとっては独りよがりでないですか。 何をするのか。 第1データを読んでPrint(シーケンシャルファイル書き込みに)しているが >リストボックス内容をテキストボックスに出力 では同じようなロジックになると思うが。 ーー 元のファイルから直接やるなら Private Sub CommandButton3_Click() Dim strL_Data As String '取得した値 Dim n As Integer n = FreeFile ListBox1.Clear Open "C:\Documents and Settings\XXXX\My Documents\aaa6.txt" For Input As #n Do While Not EOF(n) Line Input #n, strL_Data MsgBox strL_Data s = s & strL_Data & vbCrLf Loop TextBox1.MultiLine = True TextBox1.Text = s Close #n End Sub ーー リストボックスからやる理由は何なのかな。 下記はVBAでやっているが、参考にして、Formなどの例に書き換えてください。 Sub test01() Worksheets("Sheet1").TextBox1.Text = "" n = Worksheets("Sheet1").ListBox1.ListCount 'Worksheets("Sheet1").ListBox1.Clear For i = 0 To n - 1 MsgBox Worksheets("Sheet1").ListBox1.List(i) s = s & Worksheets("Sheet1").ListBox1.List(i) & vbCrLf Next i Worksheets("Sheet1").TextBox1.MultiLine = True Worksheets("Sheet1").TextBox1.Text = s End Sub
- redfox63
- ベストアンサー率71% (1325/1856)
ListBoxのClickイベントを処理して TextBoxへデータを設定しましょう Private Sub ListyBox1_Click() TextBox1.Text = ListBox1.List( ListBox1.ListIndex) End Sub 出力に関しては Private Sub CommandButton2_Click() '書込み(1)を押した時の処理 Dim strL_Data As String '取得した値 Dim n As Integer n = FreeFile ' テキストボックスにデータがセットされているなら出力 if TextBox1.Text<>"" then strL_Data = TextBox1.Text Open "c:\example.txt" For Output As #n Print #n, strL_Data Close #n End if End Sub といった具合でしょう
- K-Sogacchi
- ベストアンサー率53% (50/93)
まず >(2)その内容のリストボックスに表示 なんですが、何が不明なんでしょう? 一応、Ini(つーかテキスト)の中身は出力されますよね? 単純に中身を出力するのではダメなのであれば、 その詳細を再度説明してください。 >(3)リストボックス内容をテキストボックスに出力 については… >Private Sub CommandButton2_Click() の中の処理で、そもそもListBox1を参照してないじゃないですか。 Printで使用しているstrL_Dataにデータを代入している箇所も無いし。 まずは、ちゃんとListBoxの中身を参照する術を調査して、 その中身をstrL_Dataに反映してください。 調べていけば気付くかもしれませんが、書き込む際にも ループ処理は必要ですよ。