アプリ版:「スタンプのみでお礼する」機能のリリースについて

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


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

A 回答 (4件)

ANo.1です。


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

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
    • good
    • 0

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

まず


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

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています