• 締切済み

Access複数のクエリをExcelの1シートに出力

お世話になります。 Accessのクエリ結果をVBAでExcelへ出力をしたいと思っています。 内容としては例えば、「Q_aaa」「Q_bbb」「Q_ccc」というクエリの結果をExcel に出力したいのですが、別々のシートではなく、ひとつのシートにまず「Q_aaa」 を出力し、その次の行から「Q_bbb」を、またその次に「Q_ccc」を…という動き をさせたい思っています。 なお、それぞれのクエリ結果のレコード数は決まっていません。 サンプルコード、参考サイト、もしくは考え方でもお教え頂ければ幸いです。 宜しくお願い致します。

みんなの回答

回答No.2

新しくクエリを作成し、SQLビューで開き Select * From Q_aaa Union All Select * From Q_bbb Union All Select * From Q_ccc; と記述し、先に全ての対象データを抽出するクエリを作成してからExcelにエクスポートすることで解決できないでしょうか?

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.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ででも調べること。

関連するQ&A

  • エクセルワークシートからVBA自動作成の方法

    エクセル2007を使用しています。 エクセルワークシートからVBAを自動作成する方法を探しています。 添付のエクセルワークシート01の4行目以降を1行づつ処理し、以下のVBAを自動作成したいです。 〔作成希望VBA〕 Public Sub aaa() sample = (1111, 2222, 3333) test = A End Sub Public Sub bbb() sample = (4444, 5555, 6666) test = B End Sub Public Sub ccc() sample = (7777, 8888, 9999) test = C End Sub 以上よろしくお願いします。

  • エクセルでクエリー

    最近エクセルのVBAでDAOを使うと、アクセスのテーブルを読み込んだり出来ることを知りました。 この機能を使えば、エクセル上でアクセスでのクエリーと同じことが出来るのではないかと思って色々試してみましたが、いまひとつうまくいきません。 例えば、 シート1にあるデータ(1行目から全てデータ)を A列でグルーピングしてB列の合計をだし B列の合計が0を超えるレコードを シート2に貼り付けるといったことは可能でしょうか? サンプルのコードか参考となるホームページ、本などありましたら教えてください

  • ExcelのVBAで複数行削除を行う場合

    Excel2007のVBAで複数行を削除する方法を教えて下さい。 Excel2003で使用していたマクロが使えなくなってしまいました・・・。 下記のようなExcelシートに対して複数行ずつ行を削除し、削除対象が無くなるまで 削除処理を行うか、指定した行まで削除処理を行うという事をしたいのですが うまく動きません。 例      A列   B列   C列   D列   E列 1行目 aaa1   bbb1  ccc1 2行目             ccc2 3行目             ccc3 4行目             ccc4 5行目 aaa2   bbb2  ccc1 6行目             ccc2 7行目             ccc3 8行目             ccc4 例に対しての結果      A列   B列   C列   D列   E列 1行目 aaa1   bbb1  ccc4 2行目 aaa2   bbb2  ccc4 例に対して、複数行(指定した行数ここでは3行)の削除を行いたいのですが、 単純に複数行(3行)ずつ削除していくのではなく。 1行目や5行目にあるように文字や情報が入力されているA列とB列の情報は 残しつつ、4行目のC列以降の列の情報はすべて活かしていくという事をしたいのです。 Excel2003の時に使用していたVBAは以下のものです。 Sub 行を削除するマクロ() Workbooks("xxxx.xlsx").Activate '処理を行いたいExcel ※1 n = n + 0 LastRow = 2138           '処理を終了させたい行 ※2 Sheets("Sheet1").Select '処理を行いたいシート ※3 Do Until (n > LastRow) Rows(n + 4).Delete Shift:=xlsiftUp '削除したい行指定 ※4 n = n + 3 Loop End Sub 皆様の良いアドバイスやお知恵をお貸しください。 よろしくお願いします。

  • エクセルでブック間のシートの合体?教えてください。

    エクセルの作業で困っちゃいました。 同じホルダー内に 0210A.xls、sから0309A.xlsの12種類 0210B.xls、sから0309B.xlsの12種類 0210C.xls、sから0309C.xlsの12種類 0210D.xls、sから0309D.xlsの12種類 の48のブックがあります。(0210は2002年10月の意味です。) 各ブックは複数のシートを持っており、各ブックに共通してあるのは「AAA」、「BBB」、「CCC」の3種類で、それ以外のシートもあります。シートの順番は各ブックによりまちまちです。 これらのブックの共通する3種類のシートだけを合体して 0210AB.xlsから0309AB.xlsの12種類、(AとBの合体) 0210CD.xlsから0309CD.xlsの12種類、(CとDの合体) の24種類のブックを作りたいのです。 各ブックは「AAA」、「BBB」、「CCC」の3シートを持ちます。中身はオリジナルの各「AAA」、「BBB」、「CCC」の単純な寄せ集めです。 データは各シートとも1行目に項目、2行目以降にデータで、列はAF列まで使用しています。データの個数はまちまちで、オートフィルターを使用しています。 たとえば、0210A.xlsのシートAAAが200行であれば0210BのシートAAAのデータの一行目の項目は不要ですので2行目から最終行までコピーして201行以降に貼り付けるという感じです。同様にシートBBB、シートCCCも処理します。各シート1行目はオリジナルと同じ項目名とします。 手作業でやろうと思いましたが、誤りの発生もこわいのでVBAなどでうまくできる方法はないでしょうか?わたしのVBAの知識はマクロ自動記録ができるくらいなので助けてほしいのです。 Windows2000でエクセルも2000です。 よろしくお願いしま~す。

  • エクセルで教えて下さい。

    同じような質問があったらごめんなさい。 エクセルでシート1にデータを入力してシート2に データを整理したいのです。 シート1には重複した行があります、これを シート2には重複した行を省いた表にしたいのですが どうしたら出来るのですか? 出来ればマクロは使いたくない(使い方がわからないです) のですが。 やりたい事 シート1 --------------- AAA|45 AAA|30 AAA|20 BBB|50 CCC|30 CCC|20 シート2 ---------------- AAA| BBB| CCC| ---------------- AAAとCCCの重複している 行を省いてシート2に入力されるように したいです。 宜しくお願いします。

  • ACCESS初心者です。クエリの抽出条件の記述でお尋ねします。

    ACCESS初心者です。クエリの抽出条件の記述でお尋ねします。 更新クエリの定義で悩んでいます。どうしたら思い通りになるかご指導願います。 ★aaaフォーム a1 txt ★bbbテーブル b1 txt key b2 txt b3 txt ★ccc更新クエリ(bbbテーブル) b1 b2 b3 ★CCCクエリで抽出条件を色々試しますが結果は以下の○×の通りです。 遣りたい事は、aaaフォーム="1"でクエリ[ccc][b2]が"10"以上の場合に、[ccc][b3]を定数で更新させたいのですが、勉強不足で記述がどうしても分かりません。下記のiifはクエリ画面の[ccc][b2]列の抽出条件の記述です。 ○ iif([aaa][a1]="1","10") × iif([aaa][a1]="1",>="10") × iif([aaa][a1]="1",">=10") × iif([aaa][a1]="1","10"or"11"or"12"or"13") win xp pro ACCESS2003 です。 以上

  • 抜けている番号を抽出したい(Access2003)

    主キーのフィールドには AAA000001 AAA000002 AAA000004 BBB000001 BBB000003 BBB000004 CCC000001 CCC000005 ・ ・ ・ というレコードが多数あるのですが これだけなら AAA000003 BBB000002 CCC000002 CCC000003 CCC000004 がないというのがぱっと見でわかるのですが データが数千レコードあります。 クエリなどで抽出する方法ありますでしょうか? よろしくお願いします。

  • アクセス 複数クエリ⇒エクセルの各シートに

    MS Access と MS Excelとの連携テクニックについて、 教えてください。 アクセスで、クエリA・クエリB があるとすると、 マクロ・VBAを使用して、 これらを、エクセルファイル(ファイル名は任意)の 各シートとして、Sheet1,Sheet2としてエクスポートしたいのですが、 可能でしょうか?

  • Excel 該当セルが複数ある場合にまとめて取得

    お世話になります。 Excelでvlookupなどて検索した時に、複数の該当セルがあった場合、 一列の文字列にして取得できるワークシート関数はないでしょうか。 例えば、 A| B 1 | AAA 2 | BBB 1 | CCC 4 | DDD 1 | EEE などで、「1」の条件に引っかかったものを取得する場合、 「AAA,CCC,EEE」などのような結果が得られるワークシート関数です。 VBAで力技で行う方法はできるのですが、できる限りスマートな方法で 行いたいので、ワークシート関数で探しています。 以上、ご指導、何卒よろしくお願いいたします。

  • エクセルVBAのprintステートメントについて

    エクセルVBAのprintステートメントについて エクセルVBAからテキストファイルに文字列を書き出す場合、output権限でテキストファイルを開いて、printで一行ずつ書き出すということをやっています。この際、テキストファイルの最終行の次の行に一行を書き出すのではなく、最終行の最後に追記することはできますでしょうか。 例えば、下記のようなテキストファイルの場合、cccの次の行に書き出すのではなく、 cccの直後に文字列を書きたいのです。 よろしくお願いします。 ファイルの始まり aaa bbb ccc <EOF> -- エクセル2003

専門家に質問してみよう