「クイック アクセス ツール バーに独自マクロ(自作ボタン)を追加して、アドインとして登録したい」という質問をいただきました。
これまで、クイック アクセス ツール バーに独自マクロを追加する方法に関しては、いくつか記事を書いてきましたが(下記参照)、良い機会なのでまとめ直してみたいと思います。
- クイックアクセスツールバーからPowerPointマクロを実行するアドインの紹介
- https://www.ka-net.org/blog/?p=1636
- 「クイックアクセスツールバーからPowerPointマクロを実行するアドイン」のコード
- https://www.ka-net.org/blog/?p=5056
- クイックアクセスツールバーのボタンイメージを好きな画像にする(2)
- http://www.ka-net.org/ribbon/ri52.html
クイック アクセス ツール バーに独自ボタンを追加する方法
- まずはXMLを書いて、Custom UI Editorを使ってリボンをカスタマイズします。もちろん、Custom UI Editorを使わずファイルを編集しても問題はありません。
- 1.のファイルを開くと、「Sample Tab」タブに「サンプル」ボタンが追加されているのが確認できます。
- アプリケーションのオプション画面から「クイック アクセス ツール バー」を開きます。
- 「コマンドの選択」では1.でカスタマイズしたタブを選択し、「クイック アクセス ツール バーのユーザー設定」では、「すべてのドキュメントに適用 (既定)」ではなく「(1.のファイル名) に適用」を選択します。
- クイック アクセス ツール バーに登録したいボタンを選択し、「追加」ボタンをクリックします。
- 「OK」ボタンをクリックしてオプション画面を閉じた後、ファイルを上書き保存すれば作業終了です。
リボンXML
<?xml version="1.0" encoding="utf-8"?> <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> <ribbon> <tabs> <tab id="tabSample" label="Sample Tab"> <group id="grpSample" label="Sample Group"> <button id="btnSample" label="サンプル" size="large" imageMso="HappyFace" onAction="btnSample_onAction" /> </group> </tab> </tabs> </ribbon> </customUI>
標準モジュール
Option Explicit Public Sub btnSample_onAction(control As IRibbonControl) MsgBox control.ID, vbInformation + vbSystemModal End Sub
上記ファイルをアドイン形式(Excelの場合はxlam)で保存し、Office アプリケーションで読み込めば、アドインとして動作させることが可能です。
その他注意事項
上記のカスタマイズでは、タブ(tabSample)を表示させたままにしていましたが、tab要素のvisible属性の値を「false」にすれば、タブを非表示にした上で、クイック アクセス ツール バーに独自ボタンを追加することができます。
また、上記ではbutton要素をクイック アクセス ツール バーに追加していますが、menu要素等、他の要素を追加することもできます。
<?xml version="1.0" encoding="utf-8"?> <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> <ribbon> <tabs> <tab id="tabSample" label="Sample Tab" visible="false"> <group id="grpSample" label="Sample Group"> <menu id="mnuSample" label="サンプル メニュー" imageMso="SadFace"> <button id="btnSample1" label="サンプルボタン1" imageMso="_1" /> <button id="btnSample2" label="サンプルボタン2" imageMso="_2" /> <button id="btnSample3" label="サンプルボタン3" imageMso="_3" /> <button id="btnSample4" label="サンプルボタン4" imageMso="_4" /> <button id="btnSample5" label="サンプルボタン5" imageMso="_5" /> </menu> </group> </tab> </tabs> </ribbon> </customUI>
いつも勉強させていただいています。
でやってみると、7番目の”印刷”の項目が表示されません。
この項目は使えないのでしょうか?
よろしくお願いいたします。
佐藤様
当ブログ管理人です。
コメント中にXMLを記載されたのでしょうか?
であれば、コードが消えてしまっているようですので、大変お手数ですが、XMLコードを「[xml][/xml]」タグで囲っていただけますでしょうか?
ありがとうございます。
2行目と3行目の間に
を入力しました。(これで表示されるでしょうか?)
佐藤様
当ブログ管理人です。
「GroupPrintPreviewPrint」はgroup要素ですので、別groupに分ける必要があります。
(下記は一例です。分かりやすいように各コントロールを元の要素で定義しています。)
ただ、既存コントロールをクイック アクセス ツール バーに追加してアドイン配布する場合は、オプション画面・クイック アクセス ツール バーで、「(対象ファイル名) に適用」にした上で、「コマンドの選択」から任意のコントロールを追加すれば良いので、必ずしもXMLでカスタマイズする必要はありません。
ちなみに、「(対象ファイル名) に適用」にしてクイック アクセス ツール バーを追加すると、ファイルをZip解凍した際、userCustomizationフォルダ→customUI.xmlファイルが作成されていることが確認できます。
ご指定のコントロールをクイック アクセス ツール バーに追加した場合、customUI.xmlファイルは、下記のようになるかと思います。
私の不理解から言葉不足で、私の意図が伝わらずすみません。
の中の
の部分を単純に
に置き換えれば、
idMso=”GroupPrintPreviewPrint”
の部分も並んで表示されるものと期待したのですが、
それは
の部分を見て思ったわけなのですが、しかし、そうではないのですね。
“サンプル メニュー”(”SadFace”アイコン)の下に
idMso=”GroupPrintPreviewPrint”
が他の
idMso=”FilePrintQuick”
などと並んで順番に表示されるようにはならないものでしょうか。
佐藤様
当ブログ管理人です。
> “サンプル メニュー”(”SadFace”アイコン)の下にidMso=”GroupPrintPreviewPrint”が他のidMso=”FilePrintQuick”などと並んで順番に表示されるようにはならないものでしょうか。
menu要素の子要素としてgroup要素(GroupPrintPreviewPrintは元々group要素)が定義できないため、残念ながらそのままでは表示できません。
(control要素としてgroupを扱える、クイック アクセス ツール バー(qat)内のものとは別物)
下記のように「GroupPrintPreviewPrint」グループ内にあるコントロールをmenu等で追加してはいかがでしょうか?
menu等で区分けする必要が無ければ、上で書いた通り、
> オプション画面・クイック アクセス ツール バーで、「(対象ファイル名) に適用」にした上で、「コマンドの選択」から任意のコントロールを追加
クイック アクセス ツール バーのカスタマイズで直接コントロールを追加してしまえば、リボンをカスタマイズする必要はありません。
きぬあさ様
ありがとうございました。
希望していたことができるようになり、一通り解決しました。
いくつか理解できました。
一つは、idMso=”FilePrint”を使えば良かったことです。
これまで
オプション画面・クイック アクセス ツール バーで
idMso=”FilePrint”
を見つけることができず、
idMso=”GroupPrintPreviewPrint”
をクイックアクセスツールバーに追加していました。
そして、
idMso=”GroupPrintPreviewPrint”
の使い方を知らないまま単純に他のコントロールと並べて使えるものと思ったのです。
idMso=”FilePrint”があること、menu等で区分けする方法があることを教えていただきました。
たいへん、ありがとうございました。
旧ホームページの方で
「クイックアクセスツールバーのアイコンをまとめる」
http://www.ka-net.org/ribbon/ri51.html
を読んだときには、
「(※ すべてのドキュメントに適用されたQATではなく個別のドキュメントに適用されたQATが対象です)。」
と書いてあったので、すべてのドキュメントに適用されたQATを対象とするには、危険が伴うか何か難しいい理由があるものと考えて、それから先には進めませんでした。
Excel 2013 からはMDIからSDIに変わり、ファイルを横に並べて表示するとリボンもクイックアクセスツールバーも見ずらくなってしまい、何とか「クイックアクセスツールバーのアイコンをまとめる」ことをしてみたいと思っていました。
そこで今回、「すべてのドキュメントに適用できるアドインの紹介」となったので、大変うれしく思い、しばらくぶりで試してみました。
今後もよろしくお願いします。