【Excel VBA】メニューバーにマクロ実行を追加する

スポンサーリンク

メニューバーにマクロ実行を追加する

Excelにて、メニューバーをオリジナルにカスタマイズできるマクロです。
具体的にいうと、自作したマクロをメニューバーに追加するマクロです。

通常マクロを実行するときは、メニューバーから「表示」―「マクロ」―「マクロを表示」をクリックしていきます。

しかしながら、何度もいろいろなマクロを実行する必要があったりする場合、
毎回、メニューバーから選択していくのはとても面倒です。
VBAによってあらかじめ実行する処理を自作マクロとして記述して、メニューバーに追加しておけば、メニューバーからすぐに選択してマクロを実行できます。

特にExcelアドオンによる組み込みでちょっとした追加機能を設けたい場合などには非常に有効です。

メニューバーに「アドイン」タブが表示されそしてタブ内にオリジナルのマクロ実行メニューが表示されるようになります。
マクロ実行メニューをクリックするだけであらかじめ指定しておいたマクロが実行される仕組みです。

サンプルコード

「ThisWorkBook」の「Open」に記述



Private Sub Workbook_Open()
    Call AddMenu
End Sub

標準モジュール等に記述



Sub AddMenu()
    
    Dim NewM As Variant, NewC As Variant
    
    ''新しいメニューを追加する
    Set NewM = Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup)
    NewM.Caption = "オリジナル(&C)"
    
    ''オリジナルコマンドを追加する
    Set NewC = NewM.Controls.Add
    With NewC
        .Caption = "[処理名を記述](&U)"
        .OnAction = "[処理のプロシージャ名を記述]"
        .BeginGroup = False
    End With

End Sub

 Sub Auto_Close()
 
    On Error Resume Next
    Application.CommandBars("Worksheet Menu Bar").Controls("オリジナル(&C)").Delete

End Sub

解説

「Set NewM = Application.CommandBars(“Worksheet Menu Bar”).Controls.Add(Type:=msoControlPopup)」でメニューバーに新たにタブを追加しています。
メニューバーに新たにタブを追加するさいに「NewM.Caption = “オリジナル(&C)”」を指定することで任意の名称で追加することができます。

つづいて「Set NewC = NewM.Controls.Add」でメニューバーのタブの中身を追加しています。
「.Caption = “[処理名を記述](&U)”」で任意の名称を追加しています。
「.OnAction = “[処理のプロシージャ名を記述]”」で実行するマクロを指定しています。

最後の「Auto_Close」は記述することを強くお勧めします。
記述しないと、対象ファイルを開くたびにメニューバーに追加されてしまいます。

「Auto_Close」によって追加したオリジナルのメニューバーをExcelブックを閉じる際に消してくれます。
そうすることでExcelを開く(マクロがメニューバーに追加される)→Excelを閉じる→追加されたマクロが削除される、といった具合にきちんとメニューバーが元通りとなります。

また、マクロのコマンドは複数種類追加できますので、
自分が使いたいように編成して、よりExcelを使い勝手のいいものにカスタマイズしましょう!

また今後もExcelやVBAについてお役立ち情報などご紹介していきたいと思います!!

以上、「【Excel VBA】メニューバーにマクロ実行を追加する」でした。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする