とっておきの「まかない飯」を教えて下さい!

お世話になります。

Accessのクエリ結果をVBAでExcelへ出力をしたいと思っています。

内容としては例えば、「Q_aaa」「Q_bbb」「Q_ccc」というクエリの結果をExcel
に出力したいのですが、別々のシートではなく、ひとつのシートにまず「Q_aaa」
を出力し、その次の行から「Q_bbb」を、またその次に「Q_ccc」を…という動き
をさせたい思っています。
なお、それぞれのクエリ結果のレコード数は決まっていません。

サンプルコード、参考サイト、もしくは考え方でもお教え頂ければ幸いです。
宜しくお願い致します。

A 回答 (2件)

新しくクエリを作成し、SQLビューで開き



Select * From Q_aaa
Union All Select * From Q_bbb
Union All Select * From Q_ccc;

と記述し、先に全ての対象データを抽出するクエリを作成してからExcelにエクスポートすることで解決できないでしょうか?
    • good
    • 1

質問に


(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ででも調べること。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報