• 締切済み

リストボックスの内容を テキストファイルに出力

エクセル 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 よろしくお願いいたします。

みんなの回答

回答No.4

ANo.1です。 あー…ANo.2氏のを見て気が付いたのですが、 「出力は選択された1行」という可能性もありますな… その場合は、私が書いた「ループが必要」云々は忘れてください。 (何にせよ、結局出力したいのはどういうデータなのかという説明は  欲しいですが)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

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)
回答No.2

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 といった具合でしょう

回答No.1

まず >(2)その内容のリストボックスに表示 なんですが、何が不明なんでしょう? 一応、Ini(つーかテキスト)の中身は出力されますよね? 単純に中身を出力するのではダメなのであれば、 その詳細を再度説明してください。 >(3)リストボックス内容をテキストボックスに出力 については… >Private Sub CommandButton2_Click() の中の処理で、そもそもListBox1を参照してないじゃないですか。 Printで使用しているstrL_Dataにデータを代入している箇所も無いし。 まずは、ちゃんとListBoxの中身を参照する術を調査して、 その中身をstrL_Dataに反映してください。 調べていけば気付くかもしれませんが、書き込む際にも ループ処理は必要ですよ。