• 締切済み

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) 取り込み先の範囲は、クエリテーブルが作成された同じ ワークシートにありません。 とエラーが出ました。。。 同じワークシートにデータをとりこまなくては ならない、ということでしょうか?? すみませんがよろしくお願いいたします。

関連するQ&A

  • Access2010 イベントが動かない

    超初心者です。言葉の意味も分からない場合がありますので、どうか噛み砕いて教えてくださると助かります。 他の方がAccess2003で作成されたAccessプログラムです。 コンボボックス1 コンボボックス2 コンボボックス3 コンボボックス4 テキスト5 コマンドボタン6 コマンドボタン7 コンボボックス1で選択したものに関連するものが、コンボボックス2で選択できるようになる コンボボックス2で選択したものに関連するものが、コンボボックス3で選択できるようになる コンボボックス3で選択したものに関連するものが、コンボボックス4で選択できるようになる コンボボックス4まで選択をするとテキスト5に選択されたものが表示される。 コマンドボタン6を押すと、コンボボックス1~4、テキスト5がクリアされ、また新しくコンボボックス1から選択できるようになる。 コマンドボタン7を押すとAccessが終了する このように設定されるようです。 Access2003では正常に動いていました。 しかしOffice2010(Access2010?)を導入したために、上記のプログラムの中で、コマンドボタン6,7が動作しません。 コンボボックス1で選択したものに関連するものが、コンボボックス2で選択できるようになる コンボボックス2で選択したものに関連するものが、コンボボックス3で選択できるようになる コンボボックス3で選択したものに関連するものが、コンボボックス4で選択できるようになる コンボボックス4まで選択をするとテキスト5に選択されたものが表示される。 このアクションは問題ありません。正常に動きます。 しかし、 コマンドボタン6を押すと、コンボボックス1~4、テキスト5がクリアされ、また新しくコンボボックス1から選択できるようになる。 コマンドボタン7を押すとAccessが終了する この2つができません。 コマンドボタン6のイベントプロージャでは、 Private Sub コマンド6_Click() Me![コンボボックス1] = "" Me![コンボボックス2] = "" Me![コンボボックス3] = "" Me![コンボボックス4] = "" End Sub と書かれています。 コマンド7はプロパティシートのイベントのタブ、クリック時に「終了」となっており、マクロで動いているようです。 マクロは、クリックするとAccess終了というだけの簡単なマクロです。 <課題・問題> ・コマンドボタン6を押してもコンボボックス1~4、テキスト5が消去(クリア)されない。クリアさせたい。 ・(Access2003で実行したときに)コマンドボタン6を押してコンボボックス1~4、テキスト5を消去(クリア)しても、データを保持しているらしく、 コンボボックス1~2で選択しても、前回選択したコンボボックス2に関連するものが、コンボボックス3に選択肢が出る。正しく抽出されてこない。 ・コマンド7を押してもAccess終了が実行されない   引数’オプション’を指定した場合、’Quit’マクロアクションを無効モードで実行したり、埋め込みマクロから呼び出して実行したりすることはできません。   とエラーになる。(このエラーの意味も分かりません) どうしたら課題をクリアして動く、使えるようになるのでしょうか? 教えてください。 宜しくお願い致します。

  • VBAのデータ抽出について

     列  A   B   C 行1 番号  色   形  2  1   白   丸  3  2   赤   三角  4  1   赤   丸  5  3   黄   四角 (1)Excel Sheet1にコマンドボタン1があり、それをクリックするとUserForm1が表示されます。 (2)UserForm1には「番号」「色」「形」の各コンボボックス1,2,3が配置されています。 (3)各コンボボックス1,2,3に表示されるのは、Sheet1の各列のデータです。 (4)コンボボックス1,2,3のうち1つ選択→その条件に合うデータを抽出。  コンボボックス1,2,3のうち2つ選択→その2つの条件に合うデータを抽出。  コンボボックス1,2,3のうち3つ選択→その3つの条件にあるデータを抽出。 (5)Sheet1のコマンドボタン2をクリックすると、Sheet1は元のデータ一覧に戻る。 というようなプログラムを組みたいと思っています。 (4)のデータ抽出、(5)の戻し方がよくわかりません。 どなたかご教授下さい。

  • Access2003でコンボボックスからデータを抽出したい

    自己啓発でAccess2003を勉強しています。 Access2003でコンボボックスで名前を選択して、データ(住所)を抽出したものをリストボックスに表示させたいのですがどこがまちがっているかわかりません。こんなことで3週間ぐらい悩んでいます。 回答またはアドバイスをお願いします。 もしくはもっと簡単なやりかたがあればお願いします。 (1)「氏名」、「住所」のテーブルを作成。テーブル名は「01データ」 (2)「氏名」、「住所」のクエリを作成。クエリ名は「クエリ1」 (3)フォームでコンボボックスとリストを作成。フォーム名は「印刷」 ⇒コンボボックスの名前は「検索」。 ⇒値集合ソースはSELECT [01データ].ID, [01データ].氏名 FROM 01データ; これで「氏名」が選択できた。 (4)クエリの「氏名」抽出条件にLike [forms]![印刷]![検索] (5)検索するマクロを作成。マクロ名「M検索」 アクションは 全レコードの表示 フィルタの実行 ⇒Where条件は[Forms]![印刷]![検索]=[クエリ1]![氏名] (6)マクロ「M検索」をコンボボックスのプロパティ「イベント」タブから変更時に設定する。 (7)フォーム「印刷」を開き、コンボボックスで氏名を選択すると『クエリ1!氏名』と表示されてしまいます。 (8)フォーム「印刷」のリストボックスは全レコードが表示されている。

  • Accessデータ並べ替えをハイブリッドにしたい

    [使用しているツール] Access 2007 PROFFESSONAL [やっていること(現状)] 1つのテーブルで複数のクエリ(複数のフィールドの並べ替えが必要な為)と複数(クエリと同数)のフォームを作成して、フォームの数だけコマンドボタンを作成してフォームを一覧表示で開いています。 [やりたいこと] 1つのテーブルで「1つのクエリ」による複数のフィールド(名)を切替えて、「1つのフォーム」で表示(一覧)させたいと思っています。 例えば、テーブル名:顧客名簿(取引先、県名、商品名、入庫日)、クエリ名:顧客名簿クエリ、フォーム名:顧客名簿一覧としたとき、(取引先、県名、商品名、入庫日)をコンボボックス等で切り替えることで、指定したフィールド(名)で並び替えられたデータを「フォーム名:顧客名簿一覧」に表示させられないでしょう。 [考えたこと] コンボボックス(名前:コンボ1)を作成し値集合ソースに「”取引先”;”県名”・・・・。」と入力、クエリ「顧客名簿クエリ」の抽出条件欄にビルダを起動させて「・・・コンボ1」を指定、フォーム「顧客名簿一覧」のレコードソースにクエリ「顧客名簿クエリ」を選択しました。しかし、フォーム「顧客名簿一覧」を開いても、データは抽出できずデータなしの表示で先へ進めていません。 以上ですが、宜しくお願いします。

  • Accessのクエリ

    初めまして。Accessのクエリについての質問です。 Access2003を使っています。 検索フォームを作り、その検索フォームにテキストボックスを2つ作り、そのテキストボックスに検索したい言葉を入力し、コマンドボタンで作った検索ボタンを押すとマクロでフィルタの実行がされデータを抽出できるというものを作りました。フィルタには選択クエリを使用しています。抽出したい2つのフィールドの抽出条件にあいまい条件のLike "*" & [Forms]![フォーム名]![テキストボックス名] & "*"を入れています。 今はテキストボックスが2つですが、もっと増やしていろんな条件で検索出来るようにしたいので、3つ目のテキストボックスを作り、抽出条件も同じように入れました。ですが、そうすると今までちゃんとできていた最初の2つのテキストボックスによる抽出が違った結果となりでてきました。このとき、新しく作った3つ目のテキストボックスは空欄なので最初と同じ結果が出ると思ったのですが、これは抽出条件が3つはできないということでしょうか?どなたか教えてください。

  • フォームを開くボタンを1個でコントロールしたい

    「やりたいこと、ご指導頂きたいこと」 1,現在の運用方法(下記)ではコマンドボタンが4個と多く、使いづらいのでコマンドボタンを1個で完結できる方法が知りたいです。 2,個人的なお願いですが「マクロ」で対応できる方法があれば、そちらでお願いしたいと思います。理由は、VBAのスキルが低レベルで話にならない為。但し、不可の場合は、可能な方法でご指導願います。 「現在の運用方法の紹介」 企業の連絡情報帳をアクセスで運用しています。尚、フィールドの数は10ありますが、質問内容には検索項目の4個を紹介させて貰っています。 運用の概要ですが、検索専用フォームにコンボボックスを4個つくり、コンボボックスで企業リストテーブルを参照させて希望のフィールド(会社名、製品名、商品名、得意技)を選択させています。選択後はコンボボックスの横に配したコマンドボタン4個を使って個別フォームを開いている。運用の背景ですが、絞込検索では都合が悪い事情がある為です。 「各オブジェクトの紹介」 1,テーブル名:企業リスト 2,フォーム名:検索専用フォーム(レコードソースなし) 3,コンボボックスの名前:会社名、製品名、商品名、得意技 ・企業リストの各該当フィールドを値集合ソースにて参照 4,企業リストクエリ ・会社名(検索専用フォームのコンボボックス「会社名」を抽出条件に) ・製品名(検索専用フォームのコンボボックス「製品名」を抽出条件に) ・商品名(検索専用フォームのコンボボックス「商品名」を抽出条件に) ・得意技(検索専用フォームのコンボボックス「得意技」を抽出条件に) 5,フォーム名 ・会社名検索結果(レコードソースに会社名クエリ参照) ・製品名検索結果(レコードソースに製品名クエリ参照) ・商品名検索結果(レコードソースに商品名クエリ参照) ・得意技検索結果(レコードソースに得意技クエリ参照) 以上ですが、他に細かな設定(ファイル操作・選択文字の選択後の消去・等々)もありますが割愛して居ります。どうか宜しくお願いします。

  • ACCESSのコンボボックスデータについて

    Microsoft Office Accessのフォームに作成したコンボボックスで選択できるデータは一つしかダメなんでしょうか? コンボボックスには3項目のデータがあり2番目及び3番目のデータもクエリーの抽出条件として使いたいのですが可能でしょうか? 良い方法があれば教えて頂けないでしょうか。

  • コンボボックスからのデータ抽出

    Access2000です。 hozon - テーブル コンボボックス-nenn(2003,2004) コンボボックス-tsuki(1月から12月) コンボボックス-hi(1日~31日) コマンドボタン-抽出ボタン があり、各コンボボックスで抽出したい年月日を選択してコマンド抽出ボタンをクリックして その下にサブフォームにてテーブルから抽出したデータを表示したいのですが、どのようなコードになるのか教えてくださいませんか? データは月別の場合と日にちべつの場合とできればうれしいのですが、、 初心者なのでよろしくお願いします。

  • アクセスの抽出について。

    アクセスである製品名を入力したら、その製品名のみ抽出するように選択クエリをもとにしたフォームを使用しています。これでも充分機能を果たしているのですが、他の人が使用するのに、入力ではなく、選択肢があれば作業がしやすいとのことで、トグルボタンやコンボボックスなどのように選択して抽出ボタンを押したら抽出されるようにしたいと考えています。どのようにしたらよいのか教えてください。よろしくお願いいたします。

  • ACCESS コマンドボタンが使えない・・・

    フォームに配置したコマンドボタンが「現在このアクションを実行できません」のメッセージが出て使えなくなります。 マクロを割り当てて作ったコマンドボタンも同様で、「他の作業を実行しているためにこのアクションを実行できません・・」とメッセージが出ます。 最初、フォームを開いたときは問題なく使用できます。フォーム上のコンボボックスに入る値を、クエリから拾っているのですが、その値を別フォームで新規登録しようとするときに発生するみたいです。 他の作業を実行中とありますが、何を実行中で止まってしまうのか、調べる方法はないでしょうか? 良いお知恵をお貸し下さい。お願いいたします。

専門家に質問してみよう