質問: 既存のファイルにマクロを追加する方法として、 アドインでの読み込みを考えています。 調べたところ、標準モジュールのようにシートやブックに直接書かれていないものは アドインとして読み込めるということです。 現在、作成したマクロは、シート上のセルをマウスでクリック(SELECTION)して、 そのセル上に、SHAPEオブジェクトで四角を描かせています。 シート上のクリック検出では、シートモジュール上にイベントを書くしか方法がありません。 この方法ですと、シート上にVBAを書かざるを得なくなります。 その他、シート上にボタンがあり、それを押すとフォームが立ち上がりますが、 これもアドインには、できないかなと思っています。 このような構成において、アドインを組み込むにはどうしたら良いものでしょうか? アドインしたソースから、シートモジュールにVBAソースを描いたり、 フォーム(VBA入り)を読み込んだりすることは、可能なものでしょうか?
回答: とりあえず「可能」・「不可能」に絞って回答します。 > > シート上のクリック検出では、シートモジュール上にイベントを書くしか方法がありません。 > > > 「シート上のクリック検出」が`Worksheet_SelectionChange`などのイベントプロシージャのことであれば、他のモジュールから検出可能です。 「クラスモジュール」を使用することで、任意のオブジェクトのイベントを処理できます。(シートモジュールなども、クラスモジュールの一種と考えることもできます)。 `WithEvents`などのキーワードも参考になるでしょう。 > > その他、シート上にボタンがあり、それを押すとフォームが立ち上がりますが、これもアドインには、できないかなと思っています。 > > > クイックアクセスツールバーやリボンにもマクロを登録できるため、そこから起動する形式であれば可能です。 追加の方法はいくつかありますが、 クイックアクセスツールバーには手作業で、 リボンには`Application.CommandBars`を操作することで追加出来ます(こちらは古い方法ですが)。