即効テクニック |
作成したComアドインの機能をエクセルのコマンドバーから起動するには、コマンドバーコントロールののクリックイベントを用いることが可能です。 サンプルでは起動時に作成したComアドインをロードする設定で、起動時にワークシートメニューバーにメニューを追加し、WithEventsキーワードを用いてメニューのクリックイベントを取得しています。また、エクセルのApplicationレベルでのイベントの例として、ブックオープン時のイベントを取得して、既存のブックが開かれたときにブック名をメッセージボックスで確認しています。 ※ Office 9.0 Object Library、Excel 9.0 Object Libraryを参照設定
Public WithEvents X As Excel.Application Public CBar As Office.CommandBar Public CPop As Office.CommandBarPopup Public WithEvents Ctrl As Office.CommandBarButton Private Sub AddinInstance_OnConnection _ (ByVal Application As Object, _ ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, _ ByVal AddInInst As Object, custom() As Variant) Set X = Application 'Applicationインスタンスをオブジェクト変数に格納 'ワークシートメニューバーにメニューを登録 Set CBar = X.CommandBars(1) CBar.Reset Set CPop = CBar.Controls.Add(msoControlPopup) CPop.Caption = "ComAddinのテスト" Set Ctrl = CPop.Controls.Add(msoControlButton) Ctrl.Caption = "テストメニュー" End Sub
Private Sub AddinInstance_OnDisconnection _ (ByVal RemoveMode As AddInDesignerObjects.ext_DisconnectMode, _ custom() As Variant) CPop.Delete '登録したControlPopuppの削除 CBar.Reset 'ワークシートメニューバーのリセット Set X = Nothing End Sub
Private Sub Ctrl_Click(ByVal Ctrl As Office.CommandBarButton, _ CancelDefault As Boolean) 'コマンドバーButtonのクリックイベント MsgBox Ctrl.Caption & _ "から呼び出されたコマンドバーボタンのクリックイベントです。" & vbCrLf _ & "現在のアクティブブック名は" & X.ActiveWorkbook.Name & "ですね" End Sub
Private Sub X_WorkbookOpen(ByVal Wb As Workbook) MsgBox Wb.Name & "を開きましたね" End Sub
(参考) テクニック集:エクセルユーザのOffice 2000 Developer−Comアドインの開発