• ベストアンサー

VBA(エクセル)で自動的にボタンをクリックさせるには

いつもお世話になっております。 下記のことがしたいのですがどうやって良いのかがわからなくって困っております。 やりたいこと。 AブックとBブックが有るとします。(双方ともエクセルファイル) エクセルのVBAで、Aブックのシート上のコマンドボタンを押すと Bブックのシート上のコマンドボタンをクリックするという動きを VBAでさせたいのですがどうしてもクリックさせることができません。 試したこと。 初めは、AのボタンをクリックするとBのボタンをセレクトして SendKeysでENTERを送ってみたりしたのですがうまくいきませんでした。 何かやり方が有りましたら、お教えいただけませんでしょう。 宜しくお願いいたします。

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.3

Privateスコープを変更しない場合、Application.Runメソッドを使う手もあります。 Application.Run "'C:\Book1.xls'!Sheet1.CommandButton1_Click" ※『Sheet1』の部分はシートモジュールのオブジェクト名になります。 ですが、Bブックのボタン_Clickの中味を標準モジュールに置いて、 AブックのボタンとBブックのボタンと、両方から実行できるようにしておくほうが良いような気もしますね。 (コマンドボタンが[フォーム]ボタンの事だったら、同じマクロを[マクロの登録]するだけの話?)

tomiono1
質問者

お礼

end-uさん、ご回答ありがとうございます。 Application.Run "'C:\Book1.xls'!Sheet1.CommandButton1_Click"で 無事できました!! >ですが、Bブックのボタン_Clickの中味を標準モジュールに置いて、 >AブックのボタンとBブックのボタンと、両方から実行できるようにしておくほうが良いような気もしますね。 また、上記のご意見を参考に色々考えてみたいと思います。 ありがとうございました。

その他の回答 (2)

  • pofstar
  • ベストアンサー率50% (1/2)
回答No.2

ブックAのボタンが押されたら ブックBのボタンのコードが実行されるように しておく。というのはダメなのかな? 記述的にはブックやシートの指定が面倒かも知れませんが

tomiono1
質問者

お礼

pofstarさん、ご回答ありがとうございます。 >ブックAのボタンが押されたら >ブックBのボタンのコードが実行されるように >しておく。というのはダメなのかな? できる限り、ブックAではブックBを実行させるだけ のソースにしたいと思っております。 しかし、pofstarさんのご意見も参考にして、 色々考えてみたいと思います。 ありがとうございました。

  • Masa2072
  • ベストアンサー率51% (94/182)
回答No.1

Book1のSheet1にコマンドボタン(CommandButton1)を作成 Private Sub CommandButton1_Click() Msgbox "OK" End Sub ファイルをC:\Book1.xlsとして保存 Book2のSheet1にコマンドボタン(CommandButton1)を作成 Private Sub CommandButton1_Click() Call Workbooks.Open("C:\Book1.xls").Sheets("Sheet1").CommandButton1_Click End Sub この状態でBook1のボタンをクリックすると"OK"のメッセージボックスが表示されますが、 Book2のボタンをクリックすると「オブジェクトは、このプロパティまたはメソッドをさぽーとしていません。」というエラーが発生します。 この状態を回避するために、Book1の Private Sub CommandButton1_Click() を Public Sub CommandButton1_Click() と変更して保存します。 これでBook2のコードから、Book1のCommandButton1_Clickというモジュールを実行できます。

tomiono1
質問者

お礼

Masa2072さん、ご回答ありがとうございます。 早速試してみました!! Sheets("Sheet1").CommandButton1_Clickは以前挑戦して 駄目だったのですが、Publicにするだけで実行できるのでね。 勉強になりました!! ありがとうございました。

関連するQ&A

専門家に質問してみよう