初めまして。早速ですが質問させてもらいます。
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の列数が不特定のセルデータを保存する場合、どうすれば良いでしょうか?
どうかよろしくお願いします。
質問1への回答
Write #ではなく、Print #を使ってください。
質問2への回答
Colsが列数を表しますので、その回数だけループ処理すれば良いかと。
早速の解答ありがとうございます。
質問1に関しては解決できまた。ありがとうございました。
2に関しては、申し訳ありませんが解決できませんでした。
Colsの数だけループ処理をし、試しました。
確かに不特定の列のセルデータを保存できたのですが、結果が
a
b
c
:
の形となりました。しかし、私は保存結果として、
a,b,c,…
f,g,h,…
k,l,m,…
:,:,:,…
の形にしたいのです。
申し訳ありませんが、またよろしくお願いします。
1行分のデータを変数に溜めてからPrintすればいいじゃん。
編集 削除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です。
ありがとうございました。
解決しました。
今後も何かあればまた質問させていただきます。