- ベストアンサー
VBのファイル処理について
Dim a(10) as integer と宣言して、aの配列には0~10の値が入っています。 open "test.dat" for output as #1 でファイルに一行で書き込みたいのですが、 write #1,a(0),a(1),a(2) ・・・ のように一つづつ書くしかないのでしょうか? for i=1 to 10 write #1,a(i) というようなループをかけると、 1 2 3 4 のように縦に表示されてしまいます。 もし有効な解決法をおもちでしたらよろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Sub test01() Dim a(10) As String Open "test.dat" For Output As #1 a(1) = "a": a(2) = "b": a(3) = "c" For i = 1 To 2 Write #1, a(i), Next i Write #1, a(i) Close #1 End Sub とすると上手く行くようなんですが。 aを文字列にし、配列要素数を3にした例です。 "a","b","c" になりました。
その他の回答 (3)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
最初から1行にしてしまってから書き込むとか。 for i=1 to 10 str = str & a(i) Next write #1, str
お礼
ありがとうございます。皆さんの意見を総合して何とかできるようになりました。
- Azzuri
- ベストアンサー率68% (34/50)
Dim a(10) As Integer Dim i As Integer For i = LBound(a) To UBound(a) a(i) = i Next i Open "test.dat" For Output As #1 For i = LBound(a) To UBound(a) Print #1, CStr(a(i)); Next i Close #1 上記の例ではどうでしょうか。
お礼
ありがとうございます。皆さんの意見を総合して何とかできるようになりました。
- neKo_deux
- ベストアンサー率44% (5541/12319)
Print # ステートメントを使用して、 for i=1 to 10 print #1,a(i); と、 ExcelVBAヘルプより -----以下引用----- Print #filenumber, [outputlist] 引数 outputlist は、次の形式で指定します。 [{Spc(n) | Tab[(n)]}] [expression] [charpos] charpos 次の文字の出力位置を指定します。セミコロン (;) を指定すると、次の文字は最後の文字の直後から出力されます。 -----以上引用----- の[charpos]に(;)を指定すると、前の文字に続けて出力されたハズです。
お礼
ありがとうございます。皆さんの意見を総合して何とかできるようになりました。
お礼
ありがとうございます。皆さんの意見を総合して何とかできるようになりました。