VBA(Visual Basic for Applications)で、メニューバーを元の状態に戻す方法をご紹介しました。
このコードが必要なのは、もちろんメニューバーがカスタマイズされているなど、特殊な状況のときです。
メニューバーは、以下のようなマクロを実行するとカスタマイズできます。
Sub CustomizeMenuBar()
Dim objCB As CommandBar
Dim objCBCtrl As CommandBarControl
Set objCB = Application.CommandBars("Worksheet Menu Bar")
Set objCBCtrl = objCB.Controls.Add(Type:=msoControlPopup, Temporary:=True)
objCBCtrl.Caption = "テスト_メニューの追加"
With objCBCtrl
.Controls.Add Type:=msoControlButton
With .Controls(1)
.Caption = "テスト_コマンド"
.OnAction = "TestCmd"
End With
End With
上記のSubプロシージャを、VBE(Visual Basic Editor)を起動して標準モジュールに貼り付け、実行してみてください。
2003までのExcelなら、メニューバーに[テスト_メニューの追加]というメニュー項目が追加され、その[テスト_メニューの追加]をクリックすると、[テスト_コマンド]というコマンドが表示されるはずです。
Set objCBCtrl = objCB.Controls.Add(Type:=msoControlPopup, Temporary:=True)
objCBCtrl.Caption = "テスト_メニューの追加"
で、メニューバーに[テスト_メニューの追加]という項目を追加しています。
「Temporary:=True」とすることで、Excel終了時にこの[テスト_メニューの追加]はメニューバーから削除されます。
With .Controls(1)
・・・
End With
の部分が、ドロップダウンメニュー下にコマンドを作成している箇所です。
「OnAction = "TestCmd"」が、[テスト_コマンド]をクリックしたときに「TestCmd」マクロを実行するという記述ですが、上記のコードを貼り付けただけの状態で実行すると、「TestCmd」マクロが存在しないので、「TestCmdマクロが存在しません」といったエラーメッセージが表示されるはずです。
実際の業務アプリケーションなどでメニューのカスタマイズをする場合、「OnAction」メソッドに実際に実行したいマクロを指定してください。
▼サンプルファイル(002961.xls 36KByte)ダウンロード
サンプルファイルでは、上記の「CustomizeMenuBar」マクロの他、以前ご紹介した「ResetMenuBar」マクロ、ただメッセージを出すだけのダミーのマクロ「TestCmd」マクロが、標準モジュール「Module1」に作成してあります。
「CustomizeMenuBar」マクロ
「ResetMenuBar」マクロ
を実行するとどうなるか、
「CustomizeMenuBar」マクロ実行後に作成された、
メニュー[テスト_メニューの追加]−[テスト_コマンド]
を実行するとどうなるか、ご確認ください。
- Newer:選択したスライドに適用がない−複数マスタ
- Older:Office 2007で図形・オートシェイプに写真を入れるには?
Home » エクセルマクロ・Excel VBAの使い方 » Applicationオブジェクト » メニューバーをカスタマイズするマクロ