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回まで
  • 13歳以上
  • 登録:2010/07/14 20:47:08
  • 終了:2010/07/21 20:50:02

回答(2件)

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492010/07/14 21:12:28

ポイント60pt

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


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

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

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

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

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

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

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 hathi 208 149 46 2010-07-16 20:12:07

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません