• ベストアンサー

AccessからExcelへ出力

Access2003からExcel2003へ出力したいのですが、 クエリに3つのフィールドがあるとして、 1つ目のフィールドをExcelの1行目、 2つ目を2行目、3つ目を3行目とゆうことはできるのでしょうか? VBAは勉強中です。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

クエリというより、テーブル"T"にフィールドA、B、Cがあるとします。 以下の4個のクエリを作ります。 (1)Q1 TRANSFORM Max(CStr(T.A)) SELECT "A" AS Col FROM T GROUP BY "A" PIVOT T.A; (2)Q2 TRANSFORM Max(CStr(T.B)) SELECT "B" AS Col FROM T GROUP BY "B" PIVOT T.A; (3)Q3 TRANSFORM Max(CStr(T.C)) SELECT "C" AS Col FROM T GROUP BY "C" PIVOT T.A; (4)QX SELECT Q1.* FROM Q1 UNION SELECT Q2.* FROM Q2 UNION SELECT Q3.* FROM Q3 最後のQXが目的のクエリです。但し、左端に識別用のフィールドが出力 されるので、Export後にA列を削除してください。

orih65
質問者

お礼

できました。ありがとうございます。 自分の思うようにできなくて時間かかりましたが。 まだまだわからないことがたくさんありますので、少しづつ勉強していきます。 どうもありがとうございました!

その他の回答 (2)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

解決案をまとめます。 (1)クエリを工夫 一番、保守性が良く、速度も速い。但し、SQLの難易度が高い。 場合(テーブル構成などの条件)によっては実現できない。 現行のSQL(クエリ)を見ないと何とも言えない。 (2)Excel側の操作 一度、TransferSpreadsheet を使ってExcelに出力した後、Excelの 操作で行列を入れ替える。(コピー→形式を選択して貼り付け) (3)全てVBA 全てプログラムで実現する。 最もキメ細かい制御ができるが、処理速度が遅い。 上記中、(2)と(3)はプログラムすることに変わりは無いのですが、 データ量が多い場合は(2)の方が速く、少ない場合は同じ速さだと 思います。「多い、少ない」は感覚的なもので、マシンの性能や LANなどの環境に左右されますが、経験上、3000件くらいではないかと 思います。 プログラム難易度は(2)、(3)は同程度でしょう。(1)は実質1行で 実現でき、マクロ(Access)でも操作できます。

orih65
質問者

お礼

(1)でやる場合、 クエリにA、B、Cというフィールドがあり、  A   B   C  100   あ   1  200   い   2  300   う    3 というデータがあります。 テーブル構成は単純なものとします。 クエリ内で並べ替えたデータを表示できるのですか? 具体的にどのようにやるか教えて頂けますか? 理解できてなくて申し訳ありません。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

行、列、を入れ替えるということでしょうか? 直接は難しいので、クエリを工夫(ユニオン、クロス集計など)して 行列を入れ替えるか、Excel側の操作(マクロなど)で入れ替えるか、 全てプログラムを作りこんで対応するかの選択があります。 クエリが単純なら一番目の方法(クエリを工夫)がお勧めですが、 状況と、希望(例えばVBAを使いたい等)により解決策が変わります。

orih65
質問者

お礼

回答ありがとうございます。 はい。行、列、を入れ替えるということです。 出力するとき、Excelのファイルを指定したいので、 VBAを使わないとできないかと思いました。 他の人が使うので、フォームでボタンクリックで、 出力させて、操作がないようにしたいのです。

関連するQ&A

  • Access2000クエリーをExcelに出力するとExcel95で作ってしまいます。

     Access2000でクエリーをExcelに出力するとファイルをExcel95バージョンで作ってしまいます。Excel2000で作ったファイルを開くとき、その出力されたファイルのデータを参照するように組むと、「ファイルが読み込めません」とメッセージが出て参照してくれません。 Access2000でクエリーをExcel2000で出力させる方法はあるのでしょうか?

  • ACCESS Excelの出力について

    stressmanといいます。 実は、ACCESSでクエリをExcelへ出力をしたいのですが、 ここで、既存のExcelのファイルのセルを指定して出力 というこはできるのでしょうか? 選択クエリで必要な情報を抜き出し、そのクエリを 「営業報告書.xls」というファイルのあらかじめ記載して ある「顧客名」「住所」のセルに格納していきたいのです。 マクロで「コマンド実行」-「Excel出力」を使って みたのですが、新しくファイルを開き、クエリのデザイン そのままで出力されます。 宜しくお願いします。

  • アクセスからVBAでエクセルに出力する方法

    アクセスからVBAでエクセルに出力する方法 アクセスで下記のようなクエリの結果に対して、VBAにて会社毎のエクセルファイルを作成、 保存したいと思いますが、どのようにすればいいでしょうか? ファイル名は、[KAISYA_MEI].xlsとし、それぞれをC:\ などに保存したい。 ちなみにExcel2003、Access2003を使用しています。 ・アクセスのクエリ結果 KAISYA_ID   KAISYA_MEI  TANTOSYA_MEI     MAIL     TEL 1        ○○社        ***        ***@*** 0*-***-**** 2        △△社        ***        ***@*** 0*-***-**** 2        △△社        ***        ***@*** 0*-***-**** 3        □□社        ***        ***@*** 0*-***-**** 3        □□社        ***        ***@*** 0*-***-**** ↓  ファイル名:○○社.xls のエクセルファイル KAISYA_ID   KAISYA_MEI  TANTOSYA_MEI     MAIL     TEL 1        ○○社        ***        ***@*** 0*-***-**** ↓  ファイル名:△△社.xlsのエクセルファイル KAISYA_ID   KAISYA_MEI  TANTOSYA_MEI     MAIL     TEL 2        △△社        ***        ***@*** 0*-***-**** 2        △△社        ***        ***@*** 0*-***-**** ... よろしくお願い致します。

  • AccessのデータをExcelに貼り付け

    AccessのデータをフィルターしてExcelに貼り付けるには、AccessとExcelのどちらのVBAを使えば良いでしょうか。 前提:Accessに10フィールド100行くらいのデータがあり、Excelに氏名と日付を入力する欄がある。 処理:AccessのデータをExcelに入力した氏名と日付でフィルター(AND検索)→フィルターしたままExcelに貼り付け→そのデータをExcelの関数とVBAで処理(複雑な関数なのでAccessで処理できない)

  • AccessのデータをExcelの決まったフォーマットに出力するには?

    Access2002を使っています。 社員マスターテーブルがあります。 フィールドは「社員番号」「氏名」「かな」「年齢」があります。 クエリで対象になるデータを抽出し、それをExcelの決まったフォーマットに出力させたいです。 希望はフォーム上にマクロのボタンを作ってそれをクリックするとエクセルの決まったフォーマットにデータが出力されるようにしたいのです。 お手数をおかけいたしますが、よろしくご指導ください。_(_^_

  • アクセス2013でエクセルにデータを出力したい

    はじめまして。初心者ですがよろしくお願いします。 アクセス2013で作成したテーブルをエクセル2013に出力させたいと思っています。 出力する場所が、1行ごとに出力するセルを指定したいのですが、どのようにすればよいのかわかりません。(うまく説明できないので下記のテーブルイメージと出力エクセルイメージを見てください。) あわせて出力イメージの合計はH列になっていますが、これは可能であればの範囲で、一番やりたいことは、メーカーAの後数行あけてメーカーBにしたいのです。 ちなみに例ではメーカー名は2メーカーですが、実際には数十個あります。 よい方法があれば教えてください。 VBAは勉強中なのでなんとなくは読み書きできます。 よろしくお願いします。 ~テーブルイメージ~ メーカー名  2014/6/1  2014/6/2,2014/6/3  合計 ----------------------------------------------------- メーカーA     2    1    1     4 メーカーB     1    1    1     3 ~出力エクセルイメージ~ A       B    C    D   ・・・ H   1 メーカーA     2    1    1       4 2 3 4 5 メーカーB     1    1    1      3 6 7

  • AccessでExcelに出力

    クエリで抽出したデータをエクセルに出力すると、左上から(セルA1)から詰めて表示されますが、たとえばAの行に任意の文、データはBの行から表示させる方法はあるでしょうか。 また、出力するデータを自分で作成した表にはめ込む、もしくははめ込んだ状態で出力させるということは可能でしょうか? よろしくお願いします。

  • Access2003からExcel2003への出力

    Access2003からExcel2003へデータを出力(エクスポート)したいのですが、 対象件数が65535行を超えるため、一括でのExcel出力ができません。 2回に分けてデータを出力するか、または何か別の方法でExcel2003に出力したいのですが、 その方法がわかりません。 どなたかお分かりになる方がおられましたら、効率の良い方法をご教示ください。

  • Access2010クエリーのExcel出力書式

    Access2010で作成したクエリーをそのままの書式でEXCELに出力するVBAを組みたいと思っています。VBAは下記のとおり書いてみましたが、クエリーで表示される書式(ある列はカンマ、ある列は日付形式など)をそのまま移すことができません。このVBAをどのように変更したら、クエリーそのままの書式で出力できますでしょうか? '''''QUERYを指定 Dim varQE1 As Variant varQE1 = "QE1_List" 'QUERY名 '''''日付つきファイル名を指定 Dim varExcelPass As Variant varExcelPass = "C:\List_" & Format(Now(), "yyyymmdd") & ".xls" '''''ファイル変換出力 DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, varQE1, varExcelPass, True

  • AccessのフォームをExcelに出力

    いつもお世話になっております。 現在、Access2003でDBを作成中です。 "テーブル1"をパラメータクエリで抽出します。"クエリ1"。 そのクエリを基にフォームを作成しています。"フォーム1"。これは抽出して印刷したり、Excelに出力するために作成しました。レポートではなく、フォームにした理由は、コマンドボタン等を配置できることからです。 Excelに出力する際のVBAでつまづいてしまいました。 DoCmd.OutputTo acOutputForm, "フォーム1", acSpreadsheetTypeExcel9 これで問題なく出力できています。が、、、 Access2007の一部のPCでこれを実行するとエラーが出ます。 原因は"OutputTo"が含まれているとエラーになるようです。 ちなみにエラーは「現在出力しようとしているオブジェクトの形式は無効です。」 「2007 Office スイート Service Pack 2」こちらをインストールすると良いそうなのですが、だめでした。 WindowsXP、Office2007はこのVBAだとエラーになります。 WindowsVista、Office2007は正常に使えました。 PCの何か設定?と考えたりもしたのですが、はっきりとした原因がわからないのでは、他の人にDBを使っていただけないので、エラーにならないVBAでいきたいです。 もうひとつ、 mFileName = InputBox("ファイル名を入力してください。") DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "フォーム1", mFileName こちらのVBAはクエリの出力だとうまくいくのですが、フォームだとだめでした。 クエリから抽出して保存すれば良いのですが、理想はこの形です。 1.フォーム1を開くと「担当者を入力」とパラメータクエリが働き、抽出結果をフォーム1に表示される。 2.[出力]ボタンを押すと、ダイアログボックスが開いてファイル名を指定して保存する。または、ダイアログボックスが開かなくても名前を指定できれば良いです。最悪、指定できなくても良いですが、原因となる、"OutputTo"を避けたVBAでいきたい。 3.mFileName = InputBox("ファイル名を入力してください。") DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "クエリ1", mFileName これだと、1.でパラメータクエリで抽出結果をフォームに表示させて、2.で[出力]ボタンを押すと、また、パラメータクエリで抽出しなければならなくなるのでできれば避けたいです。 こちらの条件でご教授お願い致します。 また、WindowsXP、Office2007でエラーが出ましたので、これを解決する方法でも良いです。 よろしくお願い致します。