• ベストアンサー

EXCEL VBAアドイン:シートの右クリックメニューへの追加方法その2

下記「シートの右クリックメニュー追加」+BBBマクロをアドインへ組み込み、皆さんへ配布して、自動的に右クリックメニューに組み込んでBBBマクロを動作させたいのですが、やり方を教えて下さい。 PERSONAL.XLSのThisWorkbookにAddinstallイベントプロシージャーで下記のように記述しましたがエラーが出ます。 どのように修正すれば良いか、教えて下さい。 また、やり方はこれでOKでしょうか。 なお、標準モジュールに登録して実行すると動きます。 宜しく、お願いします。 「エラー内容」 実行時エラー’91’ オブジェクト変数またはWithプロック変数が設定されていません。 Sub シートの右クリックメニュー追加()  With CommandBars("Cell").Controls.Add   .Caption = "AAA(メニューの表示文字)"   .OnAction = "BBB(実行するマクロ名)"   .BeginGroup = True  End With End Sub

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>PERSONAL.XLSのThisWorkbookにAddinstallイベントプロシージャーで下記のように記述しましたが PERSONAL.XLSに記述するのではなく新たに新規ブックで作成します。 'ThisWorkbookモジュールに Private Sub Workbook_Open()   With Application.CommandBars("Cell").Controls.Add(Temporary:=True)     .Caption = "AAA"     .OnAction = "BBB"     .BeginGroup = True   End With End Sub '標準モジュールに Sub BBB()   '○×△・・・ End Sub このブックをアドインファイルとして保存する メニューから[ファイル]-[名前を付けて保存]-[ファイルの種類]-Microsoft Excel アドイン(*.xla)を選択しファイル名を入力して保存 つぎに作成したアドインを使えるようにします。 メニューから[ツール]-[アドイン]-で使えるアドインの一覧が出ますので先ほど保存したアドインにチェックを入れて[OK] これで使えるはずです。

pegasusv
質問者

お礼

回答有難うございます。 処理は少し勘違いしていましたが、ご指摘の通りで実現出来ました。 アドインへ組み込みについて、丁寧に説明して頂き重ねてお礼申し上げます。 なお、(Temporary:=True)は、どんな意味があるのか教えて貰えないでしょうか。(無くても同じように動作します。)

その他の回答 (2)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

>、(Temporary:=True)は、どんな意味があるのか教えて貰えないでしょうか。(無くても同じように動作します。) コマンドバーなど作成した場合、Excelを閉じてもコマンドバーは登録されたまま残ります。 次にExcelを起動した時、Workbook_Openイベントで新たに作成され二重に登録されることになります。 引数TemporaryにTrueを指定するとブックを閉じる時に自動的に削除されます >(無くても同じように動作します。) 今回のメニュー項目の追加はExcelを閉じると残らないようですね 二重に登録されることがなければ引数Temporaryは必要ありません

pegasusv
質問者

お礼

重ねての回答有難うございました。 Addinstallイベントに組み込んだので、同じ動作だったのだと思います。 色々と教えて頂き、お礼申し上げます。

回答No.1

とりあえず下記のようにすればエラーは出なくなります。 やりたいことがこれで実現できるかは不明です。 [ ThisWorkbook ] Private Sub Workbook_AddinInstall() With Application.CommandBars("Cell").Controls.Add .Caption = "AAA(メニューの表示文字)" .OnAction = "BBB(実行するマクロ名)" .BeginGroup = True End With End Sub

pegasusv
質問者

お礼

回答有難うございます。 ご指摘の通りで、エラーは無くなりました。 処理は少し勘違いしていましたが、何とか実現出来ました。