電子書籍の厳選無料作品が豊富!

Excelのブックに2シートあります。
シート1にはコンボボックス商品を選択させる行が複数あります。
シート2には、商品名がずらっと並んでいます。
(その商品名をシート1のコンボボックスで選択)

シート1上にコマンドボタンを設定して、
コマンドボタンを押すと、アクセスのクエリで
抽出したデータ(商品名)を返したいのです。

マクロに外部データの取り込み→アクセスクエリ→
シート2の行にデータを返す。

事はできましたが、それをコマンドボタンに

上記マクロを書き込むことはできるのでしょうか?

表現が下手ですみません。。

よろしくお願い致します。

A 回答 (4件)

ご質問者の方は、あまりレスポンスがよくありませんが、



たぶん、ご質問者の方の内容からして、記録マクロだと思うのです。私は、どこかで同じ回答をした覚えがあるのですが、QueryTable.Addで、出力先が決められてしまっています。ですから、それを、Sheets("Shee1").Selectととしても、もともとが、決まったシートに設定されたものですから、シートを変えるとエラーになってしまいます。

最初に、特定のシート(Sheet1)に変えておいて、QueryTable を作ったら、そのQueryTable を Refresh すればよいのですね。

ただ、話は、それで終わらないのは、これは、MS-Queryなので、SQLを作るのではなくて、パラメータ(検索値)があると良いのですね。それをどこかに置かないと、目的には達成しないわけです。

実際に、Excelにパラメータを入れて検索するのでしたら、単に、セルに、パラメータを入れるだけで、イベントを生じて、Accessから取り出しが利くわけです。VBAは必要ないのです。もうひとつ、ややこしいのは、Access と検索演算子が違うのですね。SQLを扱う人なら分ることでも、そんなテキストは、ヘルプでは、読みきることが出来ません。

ある程度、この取り扱いに慣れていれば理解できるけれども、最初からだと、ちょっとむつかしいような気がします。

この手の参考サイトとか参考テキストがあるとよいのですね。
今、Google検索してみたのですが、ヒットしませんでした。

私を含めて、この種の検索って、だいたいは、VBAのADOConnectionで行ってしまいますので、検索しても、そちらの方向だけのようです。
    • good
    • 0

出張でずいぶん遅くなりました。


エラーが出ると言うことですが、マクロの実行からだと出ないのでしょうか。
別のシートからマクロを実行するためかもしれません。
macro1 のはじめの行に
  Sheets("Sheet2").Select

そして最後の行に
Sheets("Sheet1").Select

で戻すように入れたらどうでしょうか。
    • good
    • 0

こんばんは。



中途半端な回答になって申し訳ないのですが、通常は、Accessデータベースファイルにアクセスして取り出すのは、ADO オブジェクトを使用しますが、Excelの「外部データの取り込み」って、ODBCを使って、シートに

QueryTablesが生成されるわけですから、

パラメータを入れたら、ボタンは、

確か、
 ActiveSheet.QueryTable.Refresh

だけでよかったような気がしますね。
    • good
    • 0

コマンドボタンをデザインモードでダブルクリックしてください。


VisualBasicEditorが起動します。
Private sub CommandButton・・・・
の次にマクロ名を記入してやってください。

この回答への補足

クエリのデータ取り込みマクロを作成し(Macro1)
シート2に取り込みました。

シート1のコマンドボタンのコードは、

Private Sub GetProject_Click()
Macro1
End Sub

としました。そうしましたら、

実行時エラー -2147024809(80070057)

取り込み先の範囲は、クエリテーブルが作成された同じ
ワークシートにありません。

とエラーが出ました。。。

同じワークシートにデータをとりこまなくては
ならない、ということでしょうか??

すみませんがよろしくお願いいたします。

補足日時:2005/10/03 09:49
    • good
    • 0
この回答へのお礼

クエリのデータ取り込みマクロを作成し(Macro1)
シート2に取り込みました。

シート1のコマンドボタンのコードは、

Private Sub GetProject_Click()
Macro1
End Sub

としました。そうしましたら、

実行時エラー -2147024809(80070057)

取り込み先の範囲は、クエリテーブルが作成された同じ
ワークシートにありません。

とエラーが出ました。。。

同じワークシートにデータをとりこまなくては
ならない、ということでしょうか??

すみませんがよろしくお願いいたします。

お礼日時:2005/10/03 13:54

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