MSFlexGridの各セルデータをダブルクォーテーションを付けずに保存するには?

解決


DHAL  2003-05-27 21:02:43  No: 78063  IP: [192.*.*.*]

初めまして。早速ですが質問させてもらいます。
MSFlexGridの各セルに与えたデータを保存した際、ダブルクォーテーションが付いてしまうのですが、これが付かないようにする方法はないでしょうか?

Open CommonDialog1.FileName For Output As #1
 For i = 1 To 10
  Write #1, MSFlexGrid1.TextMatrix(i,1),MSFlexGrid1.TextMatrix(i,2)
 Next i
Close #1

現在、上記のように組んでおります。
あと、MSFlexGridの列数が不特定のセルデータを保存する場合、どうすれば良いでしょうか?
どうかよろしくお願いします。

編集 削除
魔界の仮面弁士  2003-05-27 21:24:40  No: 78064  IP: [192.*.*.*]

質問1への回答
  Write #ではなく、Print #を使ってください。

質問2への回答
  Colsが列数を表しますので、その回数だけループ処理すれば良いかと。

編集 削除
DHAL  2003-05-27 22:13:42  No: 78065  IP: [192.*.*.*]

早速の解答ありがとうございます。
質問1に関しては解決できまた。ありがとうございました。
2に関しては、申し訳ありませんが解決できませんでした。
Colsの数だけループ処理をし、試しました。
確かに不特定の列のセルデータを保存できたのですが、結果が

a
b
c
:

の形となりました。しかし、私は保存結果として、

a,b,c,…
f,g,h,…
k,l,m,…
:,:,:,…

の形にしたいのです。
申し訳ありませんが、またよろしくお願いします。

編集 削除
nanashi  2003-05-28 00:45:41  No: 78066  IP: [192.*.*.*]

1行分のデータを変数に溜めてからPrintすればいいじゃん。

編集 削除
魔界の仮面弁士  2003-05-28 04:03:11  No: 78067  IP: [192.*.*.*]

Printステートメントの セミコロン区切子を利用してみてください。

例えば、
  With MSFlexGrid1
    For Row = 1 To .Rows
      Print #F, Tab(1); CStr(Row);
      For Col = 1 To .Cols
        Print #F, ","; .TextMatrix(Row - 1, Col - 1);
      Next
    Next
  End With
のようにすると、
  1,aaa,bbb,ccc,ddd
  2,AAA,BBB,CCC,DDD
  3,zzz,yyy,xxx,www
  4,ZZZ,YYY,XXX,WWW
のように、「行番号,1列目,2列目,3列目,……」なファイルを
作る事ができます。

あるいは、各セル中に改行やカンマが含まれないのであれば、
ループを使わずに一括してデータを吐き出させる方法があります。
この場合は、MSFlexGridのClipプロパティを利用します。
Clipを使うと、列方向がvbTab、行方向がvbCr区切りの文字列を
一括して得られるので、これをReplace関数にて
列方向をカンマ区切り、行方向をvbCrLf区切りに置換してやればOKです。

編集 削除
DHAL  2003-05-28 09:55:40  No: 78068  IP: [192.*.*.*]

ありがとうございました。
解決しました。
今後も何かあればまた質問させていただきます。

編集 削除