ExcelのVBAでアプリケーションを作っています。


ADODBで接続し、取得したレコードセットをワークシートに貼っています。
(CopyFromRecordsetを利用)

1.貼りつけるセルにユーザー定義書式を設定しているのですが、貼った時にこの書式が適用されない。
 例えば、A2にユーザー定義書式で "d"と設定していた場合、
 2010/7/13は 13 と表示したいが、2010/7/13と表示されてしまう(この時、書式は日付になっていた)。

2.貼った後、VBAで再度書式を設定すると、意図しない書式になってしまう。
 例えば A,B,C列で、すべて数値が入るセルについて、
 AおよびB列に .NumberFormat = "0%" で書式を設定したところ、C列にもこれが適用されてしまう。
 C列に.NumberFormat = "0" 等を設定しても現象は変わらなかった。

上記2点について、解決策があれば教えてください。

開発環境:Excel2007(ただし2003形式) + SQLServer 2000

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/07/21 20:50:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149

ポイント60pt

CopyFromRecordset はセルを完全に上書きしてしまうようなものだと認識すればいいと思います


設定を残したいのであれば GetRows で1行分を配列に読み込んでセルに書き込み、また次の行を読んでということをEOFになるまでループさせる方法になります

http://msdn.microsoft.com/ja-jp/library/cc364163.aspx

1行分を1回でセルに書き込む際には下記のように配列の向きを縦横入れ替えてやる必要があるので注意です

range(セル範囲).Value = Application.Transpose(配列)

ループが面倒ということでしたら作業用のワークシートにCopyFromRecordsetで書き込んで

目的のシートに「形式を指定して貼り付け」で値だけをコピペするというのでもいいと思います

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 hathi 216 153 49 2010-07-16 20:12:07

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません