- 締切済み
VBAを使用してエクセルのメニューを消去したい
VBAを使用してエクセルメニューバーのうち、ファイル(F)、編集(E)以外の他のメニューを全て消去又は使用できなくしたいのですが、こんなことできるのでしょうか。 もし、できるのでしたら記述の方法を教えていただきたいのですが。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- kbonb
- ベストアンサー率51% (254/492)
こんにちは 以下のページがご参考になるのでは? 【エクセル技道場】-ツールバー http://www2.odn.ne.jp/excel/waza/toolbar.html [XL97] メニューバーやツールバーを非表示にする方法 http://www.microsoft.com/JAPAN/support/kb/articles/J027/0/64.htm [XL97] メニュー/サブメニューの追加と削除を行う方法 http://www.microsoft.com/JAPAN/support/kb/articles/J028/5/32.htm
- maruru01
- ベストアンサー率51% (1179/2272)
メニューバーを自作し、既存のメニューバーと置き換えます。 onActionプロパティにマクロ名やサブルーチン名を設定します。 必要なメニューだけ追加すればよいわけです。 各動作についてはVBAのヘルプを参照して下さい。 Sub ReplaceMenuBar() Dim myCB As CommandBar Set myCB = Application.CommandBars.Add _ (Name:="User Menu Bar", Position:=msoBarTop, MenuBar:=True) 'カスタムメニューバーの作成(サブルーチン) S_AddCmdCtrl myCB myCB.Visible = True End Sub 'カスタムメニューバー作成関数 Sub S_AddCmdCtrl(myCB) Dim myCBCtrl As CommandBarControl Set myCBCtrl = myCB.Controls.Add(Type:=msoControlPopup) myCBCtrl.Caption = "ファイル(&F)" Set myCBCtrl = myCB.Controls("ファイル(&F)").Controls _ .Add(Type:=msoControlButton) myCBCtrl.Caption = "保存(&S)" myCBCtrl.OnAction = "S_SaveBook" Set myCBCtrl = myCB.Controls("ファイル(&F)").Controls _ .Add(Type:=msoControlButton) myCBCtrl.Caption = "終了(&Q)" myCBCtrl.OnAction = "S_QuitExcel" myCBCtrl.BeginGroup = True --------中略------------- End Sub '各メニューの動作 Private Sub S_SaveBook() ActiveWorkbook.Save End Sub Private Sub S_QuitExcel() Application.Quit End Sub
補足
お返事が遅くなり、申し訳ありません。 ご回答で教えていただいた、プロシージャを標準モジュールに記述して実行したところ、 Set myCB = Application.CommandBars.Add _ (Name:="User Menu Bar", Position:=msoBarTop, MenuBar:=True) のところで、 実行時エラー’5’: プロシージャの呼び出しまたは引数が不正です。 とのエラーメッセージが表示され、止まってしまいます。 なぜでしょうか。