• 締切済み

Excelのコマンドボタンでアクセスのデータを返す。

Excelのブックに2シートあります。 シート1にはコンボボックス商品を選択させる行が複数あります。 シート2には、商品名がずらっと並んでいます。 (その商品名をシート1のコンボボックスで選択) シート1上にコマンドボタンを設定して、 コマンドボタンを押すと、アクセスのクエリで 抽出したデータ(商品名)を返したいのです。 マクロに外部データの取り込み→アクセスクエリ→ シート2の行にデータを返す。 事はできましたが、それをコマンドボタンに 上記マクロを書き込むことはできるのでしょうか? 表現が下手ですみません。。 よろしくお願い致します。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

ご質問者の方は、あまりレスポンスがよくありませんが、 たぶん、ご質問者の方の内容からして、記録マクロだと思うのです。私は、どこかで同じ回答をした覚えがあるのですが、QueryTable.Addで、出力先が決められてしまっています。ですから、それを、Sheets("Shee1").Selectととしても、もともとが、決まったシートに設定されたものですから、シートを変えるとエラーになってしまいます。 最初に、特定のシート(Sheet1)に変えておいて、QueryTable を作ったら、そのQueryTable を Refresh すればよいのですね。 ただ、話は、それで終わらないのは、これは、MS-Queryなので、SQLを作るのではなくて、パラメータ(検索値)があると良いのですね。それをどこかに置かないと、目的には達成しないわけです。 実際に、Excelにパラメータを入れて検索するのでしたら、単に、セルに、パラメータを入れるだけで、イベントを生じて、Accessから取り出しが利くわけです。VBAは必要ないのです。もうひとつ、ややこしいのは、Access と検索演算子が違うのですね。SQLを扱う人なら分ることでも、そんなテキストは、ヘルプでは、読みきることが出来ません。 ある程度、この取り扱いに慣れていれば理解できるけれども、最初からだと、ちょっとむつかしいような気がします。 この手の参考サイトとか参考テキストがあるとよいのですね。 今、Google検索してみたのですが、ヒットしませんでした。 私を含めて、この種の検索って、だいたいは、VBAのADOConnectionで行ってしまいますので、検索しても、そちらの方向だけのようです。

  • Zero_0
  • ベストアンサー率35% (72/201)
回答No.3

出張でずいぶん遅くなりました。 エラーが出ると言うことですが、マクロの実行からだと出ないのでしょうか。 別のシートからマクロを実行するためかもしれません。 macro1 のはじめの行に   Sheets("Sheet2").Select そして最後の行に Sheets("Sheet1").Select で戻すように入れたらどうでしょうか。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 中途半端な回答になって申し訳ないのですが、通常は、Accessデータベースファイルにアクセスして取り出すのは、ADO オブジェクトを使用しますが、Excelの「外部データの取り込み」って、ODBCを使って、シートに QueryTablesが生成されるわけですから、 パラメータを入れたら、ボタンは、 確か、  ActiveSheet.QueryTable.Refresh だけでよかったような気がしますね。

  • Zero_0
  • ベストアンサー率35% (72/201)
回答No.1

コマンドボタンをデザインモードでダブルクリックしてください。 VisualBasicEditorが起動します。 Private sub CommandButton・・・・ の次にマクロ名を記入してやってください。

acochaco
質問者

お礼

クエリのデータ取り込みマクロを作成し(Macro1) シート2に取り込みました。 シート1のコマンドボタンのコードは、 Private Sub GetProject_Click() Macro1 End Sub としました。そうしましたら、 実行時エラー -2147024809(80070057) 取り込み先の範囲は、クエリテーブルが作成された同じ ワークシートにありません。 とエラーが出ました。。。 同じワークシートにデータをとりこまなくては ならない、ということでしょうか?? すみませんがよろしくお願いいたします。

acochaco
質問者

補足

クエリのデータ取り込みマクロを作成し(Macro1) シート2に取り込みました。 シート1のコマンドボタンのコードは、 Private Sub GetProject_Click() Macro1 End Sub としました。そうしましたら、 実行時エラー -2147024809(80070057) 取り込み先の範囲は、クエリテーブルが作成された同じ ワークシートにありません。 とエラーが出ました。。。 同じワークシートにデータをとりこまなくては ならない、ということでしょうか?? すみませんがよろしくお願いいたします。