- ベストアンサー
記録したマクロを実行するボタン
シート1にマクロを実行するボタンを 作成したいと思います。 マクロは、シートに2にアクセスdbのクエリデータを 外部データの取り込み実行でインポートする よう記録しています。 シート1のボタンに記録したマクロを 貼り付けると、エラーメッセージで 「とりこみ先の範囲は、クエリテーブルが 作成された同じワークシートにありません」 と出ました。 同じワークシートでないとクエリ実行ボタンは 作れないのでしょうか?? よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >押すたびに、行が増えていってしまいます。。 列ですね。 一旦、Sheet2に、QueryTable をひとつ作ったら、たぶん、以下のようにしてできるはずですが、 Private Sub CommandButton1_Click() Sheet2.QueryTable(1).Refresh End Sub しかし、本当に、実用になるのかは、実際の、パラメータに関わってきます。dbmファイルから、何をどのように出すか、そういう部分がはっきりしないと、この先の話が進まないかもしれません。そのためには、中身のコードがどのようになっているか分らないと、ちょっと、お話が進まないのではないか、と前の時の回答者も、私も思っているのです。 もちろん、ご自身のVBAの技術で解決するならは別ですが、パラメータ・クエリで、パラメータをワークシートのセルに記入する場合は、実際には、マクロは必要ありません。入力すれば、それが起動(イベント)として、検索するようになりますから。
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 Wendy02です。 「No.1683267 質問:Excelのコマンドボタンでアクセスのデータを返す。」と内容的には同じ質問のようです。No.1665595の回答でも、私の回答には反応されないようですが、一応、レスしておきます。 >「とりこみ先の範囲は、クエリテーブルが >作成された同じワークシートにありません」 前回の内容の、 Private Sub GetProject_Click() Macro1 '←ここが問題なのです。 End Sub そこが分らなければ、どうしようもありません。 たぶん、QueryTableの Destination の部分を書き加えたのでしょうけれども、QueryTable 自身が、ActiveSheetになっていて、Destination を換えていれば、そのようなエラーメッセージが出ます。 違うシートに出したいなら、コードはそのままで、最初に、Sheet2.Select でもすればよいです。 通常でしたら、一旦、QueryTable を作ったあとに、コマンドボタンに、以下のように付けることになるのだから、一部変えましたが、前回の回答と同じ、 ActiveSheet.QueryTables(1).Refresh ということになるでしょうけれども……。 本格的にmdb から出力したいなら、ADOを使う、というアドバイスも前と同じです。
お礼
何度もご回答ありがとうございます!!! もの分かりがわるくて・・。すみませんです。。 Private Sub CommandButton1_Click() Sheets2.Select Macro3 End Sub としました。 (Mcro3は Sheet2のA1:A25にクエリデータを返すものです。) 無事に上記のコードでSheet2にデータは返せましたが、 押すたびに、行が増えていってしまいます。。 ActiveSheet.QueryTable.Refresh ではうまく動きませんでした。。。 何度もすみませんがどうぞよろしくお願いします。 ADOも現在トライ中です。
- kajitsu
- ベストアンサー率16% (15/93)
BOOK間でもマクロは可能ですので、シートなら尚更。大丈夫ですよ。 コピーではなく、ボタンを作った後に、マクロの編集で作ったマクロを登録してみたらいかがでしょう?
お礼
大変お礼が遅くなってしまいまして 申し訳ございませんでした。。 何とかADOで読み込むことが できるようになりました!! ありがとうございました。 ADOを勉強します。