- 締切済み
Access複数のクエリをExcelの1シートに出力
お世話になります。 Accessのクエリ結果をVBAでExcelへ出力をしたいと思っています。 内容としては例えば、「Q_aaa」「Q_bbb」「Q_ccc」というクエリの結果をExcel に出力したいのですが、別々のシートではなく、ひとつのシートにまず「Q_aaa」 を出力し、その次の行から「Q_bbb」を、またその次に「Q_ccc」を…という動き をさせたい思っています。 なお、それぞれのクエリ結果のレコード数は決まっていません。 サンプルコード、参考サイト、もしくは考え方でもお教え頂ければ幸いです。 宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- MayFlowers
- ベストアンサー率100% (2/2)
新しくクエリを作成し、SQLビューで開き Select * From Q_aaa Union All Select * From Q_bbb Union All Select * From Q_ccc; と記述し、先に全ての対象データを抽出するクエリを作成してからExcelにエクスポートすることで解決できないでしょうか?
- imogasi
- ベストアンサー率27% (4737/17070)
質問に (1)アクセス側のモジュールで記述 (2)EXCEL側のもVBAで記述 のどちらかを明記すべきだ。(1)らしいが、 受ける側がEXCELなので(2)でやるか、コードの早い段階でExcel.Applicatioの世界に入る方が良いと思う。 ーー 何も書いてないが、 それにEXCELにはマクロの記録と言うのが有るのを知らないのかな? 初心者はマクロの記録が取れないか、まず頭をめぐらすべきだ。操作(メニュー)によっては、取れない場合も有るが。 ーー 持ってくるのが3つクエリがあっても、まず1つについて EXCELでマクロの記録状態にして データー外部データの取り込みーデータの取り込みーファイルの指定 (もちろんmdb指定とクエリやテーブルの2段階指定)と取り込みするEXCELシートの左上セルを指定で、取りこままれる。 このEXCELの操作を知らないとどうにもならないが、EXCELVBAをやるには、EXCELの知識も要るということ。 Sub Macro1() With ActiveSheet.QueryTables.Add(Connection:=Array( _ "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=C:\Documents and Settings\OTO\My Documents\社員2.mdb;Mode=S" _ , _ ・・・ ), Destination:=Range("A16")) ・・・ End With End Sub となる(中間行略) ーー 第2の取り込みは Sub test02() d = Range("A65536").End(xlUp).Row MsgBox d End Sub をテスト実行すればわかるように、上記実行後の最下データ行番号が このコードで判る(常識的なぐらい良く出てくるコード)。 だから第2の繰り返し時には マクロの記録のDestination:=Range("A16"))を Destination:=Range("A21"))のように指定して第2ループに入り実行する。インポートするクエリの数の回数だけ、Loopすればよい。 ここまでぐらいやって、突きあったった点について質問しないと、丸投げ質問だ。 ーー アクセスVBAでExcel.Applicatioの世界に入った(そのやり方はGoogleで「Excel.Applicatio」で照会)場合は、EXCEL定数などで、上記のそのままのコードが使えない場合が有るので、その点にぶつかったらGoogleででも調べること。