HOME > 即効テクニック > Excel VBA > その他関連のテクニック > エクセルユーザのOffice 2000 Developer−Comアドイン機能のコマンドバーへの登録

即効テクニック

その他関連のテクニック

エクセルユーザのOffice 2000 Developer−Comアドイン機能のコマンドバーへの登録

(Excel 2000)

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