実際にExcelからSQLを使用するコードに沿って、コードの内容を紹介していきます。
ベースとなるコードは下記のとおりです。
今回は「データの貼り付け作業」欄です。
Recordset の結果をシートに貼り付け
Recordsetの結果はタイトル行とデータ部分が分割して保持されている。
タイトル行
下記構文で取得する
'Recordset Open後 for i = 1 to myrs.fields.count cells(1,i).value = myrs.fields(i-1).name next
ループ構文でRecordset.FieldsのNameプロパティの値を順番に取得していく。
ADO.Connection オープン時にHDR=NOを指定した場合は、1列目はF1、2列目はF2という連続した値が格納されている。
もしくはSQL内で固定値を指定した場合はその値。
SQL文の「as」で別名を指定した場合はその値が格納されている。
データ部分
下記構文で取得する
タイトル行部分を除いたデータ部分が下記コードでシートに転記される。
転記する際に上記で貼り付けたタイトルを上書きしないように貼り付け位置を気をつける。
Range.copyfromrecordset myrs
タイトル行が不要であれば、こちらのコードだけを実行すればOK。
貼付け位置は自由自在
CopyFromRecordsetでデータを貼り付ける位置は自由自在。
普通のデータベースであれば出来ないであろう、元データに上書きなんてことも出来てしまいます。
自由であるがゆえに要注意。
普通は元データがあるシートとは別のシートに貼り付けると良いでしょう。