t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

改訂版 VBA リボンから呼び出すマクロに共通の前処理をつける方法

先日書いた記事に対し、アドバイスをいただいたので早速改訂してみた。


といっても、xml側にTagを追加して、マクロ側の参照をIDからTagに換えるだけ。
どうせなので、2バイト文字でやってみた。

CustomUI.xmlのコード

肝心の追加した部分が右に切れちゃってるのでヨコスクロールしてください。

<?xml version="1.0" encoding="utf-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
<tab id="SampleTab" label="○○タブ">

<group id="CustomGroupA" label="○○グループ">
<button id="Hello" imageMso="HappyFace" size="large" label="マクロA" tag="あ" onAction="Start" />
<button id="GoodBye" imageMso="SadFace" size="normal" label="マクロB" tag="い" onAction="Start" />
</group>

</tab>
</tabs>
</ribbon>
</customUI>

VBAコード

Sub Start(ByVal control As IRibbonControl)
    Call 共通処理
    Application.Run control.Tag
End Sub

Private Sub()
    MsgBox "hello"
End Sub

Private Sub()
    MsgBox "GoodBye"
End Sub

Private Sub 共通処理()
    MsgBox "RibbonClicked!"
End Sub

ばっちし!

2015/03/11追記

この後さらに改訂したので、以下記事もどうぞ。

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。