dポイントプレゼントキャンペーン実施中!

教えて下さい。
a(100,200)の2次元配列のデータをファイルに保存したいのですが、
a(0,0),a(0,1),a(0,2).......a(0,200)
a(1,0).......
a(2,0)...
.
.
.
a(100,0)...................a(100,200)
といった感じでカンマ区切りでCSV形式で保存したいのですが、これを簡単にファイルに保存する方法を
教えて下さい。
よろしくお願いします。

A 回答 (6件)

; をつけないと改行されてしまうようです。



for i=0 to 100
for k=0 to 199
write #1,a(i,k);
next k
write #1,a(i,200)
next i

これでどうでしょうか?
    • good
    • 2

Writeは必ず改行が入るので、Printを使ってください。



for i=0 to 100
for k=0 to 200
Print #1, a(i,k);
If k = 200 Then
Print #1, ""
Else
Print #1, ",";
End if
next k
next i
    • good
    • 0

#2のものです。

#1の補足の
>するとデータがすべて縦に並んでしまいました
私のも縦に並びます。メモ帳などで見ると縦に
配列1つずつ並んで見えると言うことでしょうが
これは「縦に並ぶ」とは言いません。復帰改行コード
(vbCrLf)がWrite#ステートメント発行時毎に入ると言うことです。
(完成ごエクセルの表のセルに読みこませたいとは、書いてないですね。)
それでそうしたいのであれば、仮にsと言うStringを定義し
For k=1 to 200
s=""
For i=1 to 100
s=s & a(k,i) & ","
next i
s=s & vbCrLf
Print #1,s
next k
のように100まで溜め込み、復帰改行と共に書き出せばよい。
    • good
    • 0

Open "test.csv" For Output As #1


for i=0 to 100
for j=0 to 199
write #1,a(i,j),
next j
write #1,a(i,200)
next i
close #1
end
    • good
    • 0

大事なことで、処理のスタートは、どこなんでしょうか。


と言うのは、(1)プログラムの途中で、配列a(x,y)の
dim a(100)にデータが出来ていて、それをテキスト
ファイルに落としたいのか(2)紙の上にデータがあって
いまから(多分キーボードインプットで)入力して、読みこんだ時にa(x,y)の形に出きる、テキストファイルを作るのかです。
#1のお答えは(1)を前提にしているようです。
(2)で有れば、配列名aは当然入力不要で、x,yはペア
で入れることになるでしょう。また配列要素x、yはデータの中に持たなくても良いでしょうね。
x1,y1,x2,y2,x3・・・でも良いし、x1;y1,x2;y2,x3;・
でも良い。後者はセパレータは,,/,;,-など、どれか決めて
おけば良いと思う。入力手数は前者後者とも同じですが、
読み込んだ時、前者はx$,Y$で受けられる。後者はセパレータで分割せねばならない。しかし1データ飛ばして全体がずれる恐れは少ない。後者の例。テスト済み。
Sub test01()
Dim a As String
Open "c:\My Documents\aa2.txt" For Output As #1
For i = 1 To 1000
a = InputBox("(x,y)=")
If a = "end" Then GoTo ed
Write #1, a
Next i
ed:
Close #1
End Sub
復帰改行(レコード区切り)を要素1個1個に入れるかも
配列要素数がもっと多ければ、考える余地があろう。

この回答への補足

ありがとうございます
ちなみに処理のスタートは(1)です。

補足日時:2002/12/13 18:41
    • good
    • 0

ファイルをオープンしてある状態で、出力するところだけです。



for i=0 to 100
for k=0 to 199
write #1,a(i,k) & ","
next k
write #1,a(i,200)
next i

上記のように二重ループにすればいいかと思います。
ファイルに出力する部分は、ちょっと違うかもしれませんが・・・。
ま、参考程度に。

この回答への補足

ありがとうございます。
実際に試してみました。
するとデータがすべて縦に並んでしまいました。
私の説明が悪かったとは思いますがやりたいことは、
この回答を例に取ると、
for k=0 to 200 のデータを横一列にならべて、
for i=0 to 100 のデータを縦一列にならべて、
100*200のセルに当てはめるやり方が知りたいのです。
よろしくお願いします。

補足日時:2002/12/13 18:19
    • good
    • 0

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