作成した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アドインの開発
|