こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

エクセル 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


よろしくお願いいたします。

投稿日時 - 2008-07-14 11:06:29

QNo.4175404

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

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

投稿日時 - 2008-07-14 12:54:34

ANo.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

投稿日時 - 2008-07-14 12:48:31

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

投稿日時 - 2008-07-14 12:07:08

ANo.1

まず
>(2)その内容のリストボックスに表示
なんですが、何が不明なんでしょう?
一応、Ini(つーかテキスト)の中身は出力されますよね?
単純に中身を出力するのではダメなのであれば、
その詳細を再度説明してください。

>(3)リストボックス内容をテキストボックスに出力
については…
>Private Sub CommandButton2_Click()
の中の処理で、そもそもListBox1を参照してないじゃないですか。
Printで使用しているstrL_Dataにデータを代入している箇所も無いし。
まずは、ちゃんとListBoxの中身を参照する術を調査して、
その中身をstrL_Dataに反映してください。
調べていけば気付くかもしれませんが、書き込む際にも
ループ処理は必要ですよ。

投稿日時 - 2008-07-14 11:34:35

あなたにオススメの質問