PR

VBAでXML形式のファイルを使用してFulentリボンを設定する-その1

Excel VBA Tips
この記事は約36分で読めます。

「Excel VBA Tips」ではExcel VBAを使用していて気付いたことを取り上げて行きます。

今回から3回に渡り、XML形式のファイル”customUI14.xml”を使用したFulentリボンの機能についてご紹介いたします。

初回はMicrosoftドキュメントで提供されているXML形式でのFulentリボンの属性とコールバック関数について情報を整理し、次回以降の2回で簡単なコーディング事例をご紹介する3本立てでご説明したいと存じます。

なお、Office 2007より前のバージョンのOffice向けとして現在でも使用する事ができるCommandBarオブジェクトモデルからFulentリボンへの置き換えの概要説明は、少し分かり難いのですがMicrosoftドキュメント「Office Fluent リボンの概要」をご参照いただければ幸いです。

※動作は32bit版Excel 2016と64bit版Excel 2021の バージョン2401(ビルド 17231.20236)を使用して検証しています。

スポンサーリンク

Fulentリボンに関するMicrosoftドキュメントの状況

Microsoftドキュメントの中でFulentリボンに関するドキュメントを探すと、Office2007については少し詳しく説明がされたドキュメント「2007 Office Fluent リボンをカスタマイズする (開発者向け) (パート 1/3)」が存在しています。

2007 Office Fluent リボンに関するドキュメント

このドキュメントは左図のように1/3から3/3の3つの記事で構成されていますので、上記のリンクを開いてサイドメニューから参照してください、なお内容はつぎのようになっています。

  1. 2007 Office Fluent ユーザー インターフェイスをカスタマイズする方法
  2. リボン ユーザー インターフェイスのコントロールおよびメソッド シグネチャ
  3. Microsoft Office Fluent ユーザー インターフェイスについてよく寄せられる質問

このドキュメントですが、更新が”2006年10月”からされていないので、現在までに加えられた変更が反映されていません。

タイトルの直下に❝[アーティクル]・2015/06/15❞と書かれているので、「論文として再掲載した」という扱いになると思います。

Custom UI XMLマークアップ仕様のドキュメント

そうなると、更新されたドキュメントが存在しないのか?気になるところです。

いろいろと検索すると、オープン仕様の中に英語版でしか存在しなのですが、”[MS-CUSTOMUI]: Custom UI XML Markup Specification”(Custom UI XMLマークアップ仕様)というページが存在する事が解りました。

このサイトの中に、PDFもしくはワード文章でドキュメントが公開されていて、2009/1/15のバージョン1.0から最新では2024/2/20のバージョン10.1まで更新されています。
※古いバージョンはリンクが外されているので中身は見る事が出来ない状態ですが…

このドキュメント(英語版)には詳しい使い方が説明されていますので、これを読めば良いのですが、ただし残念なことに”2007 Office Fluent リボンをカスタマイズする (開発者向け) (パート 3/3)“のQ&A集の中に書かれていた、「ロールバックとその関数の引数」についてのドキュメントが含まれていないのです…

ちなみにこのドキュメントのCustom UIで示されているXML形式ファイルの名前は”customUI.xml“になります。

Custom UI XMLマークアップ バージョン2 仕様のドキュメント

そこで別なドキュメントが存在しないか調べると、オープン仕様の中に前章によく似た”[MS-CUSTOMUI2]: Custom UI XML Markup Version 2 Specification”(Custom UI XMLマークアップ バージョン2 仕様)が存在している事に気付きます。

このサイトの中に、英語版になりますが、PDFもしくはワード文章でドキュメントが公開されていて、2009/7/13のバージョン1.0から最新では2021/8/17のバージョン6.0までが公開されています。

ただこの中にも探している情報は含まれていませんでした…

ちなみにこちらのXML形式ファイルの名前は”customUI14.xml“です。

この2つのオープン仕様の違いは何か?

Word, Excel, and PowerPoint Standards Support“のページで、この2つの仕様の説明がつぎのようにされています。

仕様説明
[MS-CUSTOMUI]: Custom UI
XML マークアップ仕様
ECMA-376 Office Open XML ファイル形式 [ECMA-376] のデータ
で UI カスタマイズを実装するために使用される。
[MS-CUSTOMUI2]: Custom UI
XML マークアップ バージョン 2 仕様
ISO/IEC29500:2012 で指定されている Microsoft Office Open XML
ファイル形式標準のデータ
で UI カスタマイズを実装するため
に使用される。

そうなんです。2つの存在しているのは、言い換えるとバージョン2が必要になったのは、XML形式の規格をMicrosoft Office製品に合わせるのが原因だったようです。

従ってCustom UIそのものの機能としては大きな違いが無いものと思われます。(ただしすべてを確認した分けではありせんが…)

今回の記事の目的

そうなると、自力で”2007 Office Fluent リボンをカスタマイズする (開発者向け)”のパート2・3に書かれている内容を、最新の”Custom UI XML マークアップ仕様”と突き合わせてまとめるしか方法がなさそうです。

という事で、今回の記事の目的は、 「Office Fluent リボンをカスタマイズするために必要なOffice Open XMLの主な機能の一覧表の最新版を作成する」ということにします。

具体的には”2007 Office Fluent リボンをカスタマイズする (開発者向け) (パート 2/3)“では書かれていない最新の”Custom UI XML マークアップ仕様”にはある属性とコールバック関数を付け加えて一つにまとめるのが狙いです。

従って、この後の章は無味乾燥な一覧表が続く事に成りますので、あらかじめお含み置きください。

いろいろなタグで使用される共用属性とコールバック関数

個別のタグを説明する前に、まずはいろいろなタグで繰返し使用されている20個の属性と12個のコールバック関数について一覧にまとめます。

なおここにご紹介していない、特定のタグにしか出てこない属性やコールバック関数は、個別のタグの説明の中でご紹介いたします。

共用されている属性

まずは20個の属性名の一覧と、個々の属性の設定値と説明の表をご紹介し、どのくらい使われているのか?の回数をまとめています。

属性 [01]description[02]enabled[03]id[04]idMso[05]idQ[06]image[07]imageMso
[08]insertAfterMso[09]insertAfterQ[10]insertBeforeMso[11]insertBeforeQ[12]keytip[13]label[14]screentip
[15]showImage[16]showLabel[17]size[18]supertip[19]tag[20]visible
共用属性名一覧
共用属性

それぞれの属性が、個別のタグに登場する回数

[01] 6回[02] 12回[03] 18回[04] 15回[05] 17回[06] 13回[07] 13回
[08] 17回[09] 17回[10] 17回[11] 17回[12] 13回[13] 14回[14] 13回
[15] 11回[16] 11回[17] 6回[18] 13回[19] 13回[20] 17回
共用属性出現回数

共用コールバック関数

まずは12個のコールバック関数名の一覧と、個々のコールバック関数のサブルーチンヘッダーと説明の表をご紹介し、どのくらい使われているのか?の回数をまとめています。

Call[1]getDescription[2]getEnabled[3]getImage[4]getKeytip[5]getLabel[6]getScreentip[7]getShowImage
back[8]getShowLabel[9]getSize[10]getSupertip[11]getVisible[12]onAction
共用コールバック関数名一覧
共用コールバック関数

それぞれのCallbackが、個別のタグに登場する回数

[01] 7回[02] 13回[03] 13回[04] 14回 [05] 14回[06] 13回 [07] 12回
[08] 12回[09] 7回[10] 12回[11] 18回[12] 8回
共用コールバック関数出現回数

個別のタグ「リボンXMLの固有タグ」

“2007 Office Fluent リボンをカスタマイズする (開発者向け)”のパート2で「リボンXMLの固有タグ」と「基本的コントロール(タグ)」に分類されているので、それを踏襲しています。

この章では「リボンXMLの固有タグ」の情報をまとめていますが、属性・コールバック関数ともに新たに付け加えられたものは存在していません。

customUI(Custom UI Document Root)

リボンをカスタマイズする際のルート タグになる。

※共用属性・コールバック関数はなし。

個別属性
個別コールバック関数

commands(List of Repurposed Commands)

グローバルに再利用されるコマンドを指定する。

※共用を含め属性・コールバック関数は一切なし。

command(Repurposed Command)

再利用されているコマンドを指定する。

属性      [02]enabled     [04]idMso               
共用属性名一覧
Call     [2]getEnabled                    
back[12]onAction
共用コールバック関数一覧
個別コールバック関数

ribbon(Ribbon)

Fluent UI である事を表す。

※共用属性・コールバック関数はなし。

個別属性

contextualTabs(List of Contextual Tab Sets)

特定のオブジェクトの種類 (図ツールなど) が選択されたときに表示されるタブ

※共用を含め属性・コールバック関数は一切なし。

tabSet(Contextual Tab Set)

タブ コントロールのコレクションを表す。

属性                [04]idMso               
[20]visible
共用属性名一覧
Call                              
back[11]getVisible
共用コールバック関数一覧

qat(Quick Access Toolbar)

クイック アクセス ツール バーを表す。

※RibbonタグのstartFromScratch属性がtrueの時に設定できる。

※共用を含め属性・コールバック関数は一切なし。

sharedControls(List of Shared Quick Access Toolbar Controls)

ドキュメント間で共有されるクイック アクセス ツールバーを指定する (通常は、documentControls を使用し、sharedControls は使用しない)。

※共用を含め属性・コールバック関数は一切なし。

documentControls(List of Document-Specific Quick Access Toolbar Controls)

クイック アクセス ツールバー上のコントロールのリストを指定する。

※共用を含め属性・コールバック関数は一切なし。

officeMenu

Microsoft Office のメニューを指定する。組み込みの Office メニューを参照するために使用

※共用を含め属性・コールバック関数は一切なし。

tabs(List of Tabs)

リボンのタブ コントロールのリストを指定する。

※共用を含め属性・コールバック関数は一切なし。

tab(Tab)

リボン上のタブを表す。

属性 [03]id[04]idMso[05]idQ     
[08]insertAfterMso[09]insertAfterQ[10]insertBeforeMso[11]insertBeforeQ[12]keytip[13]label
[19]tag[20]visible
共用属性一覧
Call               [4]getKeytip[5]getLabel          
back[11]getVisible
共用コールバック関数一覧

group(Group)

リボン上のタブ内のグループを表す。

属性 [03]id[04]idMso[05]idQ[06]image[07]imageMso
[08]insertAfterMso[09]insertAfterQ[10]insertBeforeMso[11]insertBeforeQ[12]keytip[13]label[14]screentip
[18]supertip[19]tag[20]visible
共用属性一覧
Call          [3]getImage[4]getKeytip[5]getLabel[6]getScreentip     
back[10]getSupertip[11]getVisible
共用コールバック関数一覧

個別のタグ「基本的コントロール(タグ)」

つぎに基本的コントロール(タグ)をご紹介します。

新たに付け加えられた属性・コールバック関数は赤字にしています。

box

グループ内にコントロールを配置する。

属性 [03]id[05]idQ     
[08]insertAfterMso[09]insertAfterQ[10]insertBeforeMso[11]insertBeforeQ
[20]visible
共用属性一覧
個別属性
Call                              
back[11]getVisible
共用コールバック関数一覧

button(Button)

ボタン コントロールを表す。

属性 [01]description[02]enabled[03]id[04]idMso[05]idQ[06]image[07]imageMso
[08]insertAfterMso[09]insertAfterQ[10]insertBeforeMso[11]insertBeforeQ[12]keytip[13]label[14]screentip
[15]showImage[16]showLabel[17]size[18]supertip[19]tag[20]visible
共用属性一覧
Call[1]getDescription[2]getEnabled[3]getImage[4]getKeytip[5]getLabel[6]getScreentip[7]getShowImage
back[8]getShowLabel[9]getSize[10]getSupertip[11]getVisible[12]onAction
共用コールバック関数一覧
個別コールバック関数

buttonGroup

ボタンのグループ化を表す。

属性 [03]id[05]idQ     
[08]insertAfterMso[09]insertAfterQ[10]insertBeforeMso[11]insertBeforeQ
[20]visible
共用属性一覧
Call                              
back[11]getVisible
共用コールバック関数一覧

checkBox(Check Box)

チェック ボックス コントロールを表す。

属性[1]getDescription[02]enabled[03]id[04]idMso[05]idQ[06]image[07]imageMso
[08]insertAfterMso[09]insertAfterQ[10]insertBeforeMso[11]insertBeforeQ[12]keytip[13]label[14]screentip
[15]showImage[16]showLabel[18]supertip[19]tag[20]visible
共用属性一覧
Call[1]getDescription[2]getEnabled[3]getImage[4]getKeytip[5]getLabel[6]getScreentip[7]getShowImage
Back[8]getShowLabel[10]getSupertip[11]getVisible[12]onAction
共用コールバック関数一覧
個別コールバック関数

comboBox(Combo Box)

コンボ ボックス コントロールを表す。

属性[02]enabled[03]id[04]idMso[05]idQ[06]image[07]imageMso
[08]insertAfterMso[09]insertAfterQ[10]insertBeforeMso[11]insertBeforeQ[12]keytip[13]label[14]screentip
[15]showImage[16]showLabel[18]supertip[19]tag[20]visible
共用属性一覧
個別属性
Call[2]getEnabled[3]getImage[4]getKeytip[5]getLabel[6]getScreentip[7]getShowImage
back[8]getShowLabel[10]getSupertip[11]getVisible
共用コールバック関数一覧
個別コールバック関数

dialogBoxLauncher

グループのダイアログ ボックス起動プログラムを格納する。

・グループには 1 つの dialogBoxLauncher コントロールのみを格納することができる。

・このコントロールにはボタン コントロールを格納する必要がある。

・このコントロールは、含まれるグループ要素内の最後の要素として表示される必要がある。

dropDown(Drop-down Control)

ドロップダウン リスト ボックスを表す。

属性 [02]enabled[03]id[04]idMso[05]idQ[06]image[07]imageMso
[08]insertAfterMso[09]insertAfterQ[10]insertBeforeMso[11]insertBeforeQ[12]keytip[13]label[14]screentip
[15]showImage[16]showLabel[17]size[18]supertip[19]tag[20]visible
共用属性一覧
個別属性
Call[2]getEnabled[3]getImage[4]getKeytip[5]getLabel[6]getScreentip[7]getShowImage
back[8]getShowLabel[10]getSupertip[11]getVisible[12]onAction
共用コールバック関数一覧
個別コールバック関数

dynamicMenu(Dynamic Menu)

実行時にコンテンツを動的に設定するメニューを表す。

属性 [01]description[02]enabled[03]id[04]idMso[05]idQ[06]image[07]imageMso
[08]insertAfterMso[09]insertAfterQ[10]insertBeforeMso[11]insertBeforeQ[12]keytip[13]label[14]screentip
[15]showImage[16]showLabel[17]size[18]supertip[19]tag[20]visible
共用属性一覧
個別属性
Call[1]getDescription[2]getEnabled[3]getImage[4]getKeytip[5]getLabel[6]getScreentip[7]getShowImage
back[8]getShowLabel[9]getSize[10]getSupertip[11]getVisible
共用コールバック関数一覧
※size属性は無いがgetSizeはある。
個別コールバック関数

editBox(Edit Box)

エディット ボックスのコントロールを表す。

属性 [02]enabled[03]id[04]idMso[05]idQ[06]image[07]imageMso
[08]insertAfterMso[09]insertAfterQ[10]insertBeforeMso[11]insertBeforeQ[12]keytip[13]label[14]screentip
[15]showImage[16]showLabel[18]supertip[19]tag[20]visible
共用属性一覧
個別属性
Call[2]getEnabled[3]getImage[4]getKeytip[5]getLabel[6]getScreentip[7]getShowImage
back[8]getShowLabel[10]getSupertip[11]getVisible
共用コールバック関数一覧
個別コールバック関数

gallery(Gallery)

ギャラリー コントロールを表す。

属性 [01]description[02]enabled[03]id[04]idMso[05]idQ[06]image[07]imageMso
[08]insertAfterMso[09]insertAfterQ[10]insertBeforeMso[11]insertBeforeQ[12]keytip[13]label[14]screentip
[15]showImage[16]showLabel[17]size[18]supertip[19]tag[20]visible
共用属性一覧
個別属性
Call[1]getDescription[2]getEnabled[3]getImage[4]getKeytip[5]getLabel[6]getScreentip[7]getShowImage
back[8]getShowLabel[9]getSize[10]getSupertip[11]getVisible[12]onAction
共用コールバック関数一覧
個別コールバック関数

item(Selection Item)

gallery、dropDown、または comboBox の静的項目

※静的項目を指定した場合、動的項目は指定できない。

※共用コールバック関数はなし。

属性           [03]id     [06]image[07]imageMso
[13]label[14]screentip
[18]supertip
共用属性一覧

labelControl(Text Label)

ラベル コントロールを表す。

属性[02]enabled[03]id[04]idMso[05]idQ[06]image[07]imageMso
[08]insertAfterMso[09]insertAfterQ[10]insertBeforeMso[11]insertBeforeQ[12]keytip[13]label[14]screentip
[15]showImage[16]showLabel[18]supertip[19]tag[20]visible
共用属性一覧
Call[2]getEnabled[3]getImage[4]getKeytip[5]getLabel[6]getScreentip[7]getShowImage
back[8]getShowLabel[10]getSupertip[11]getVisible
共用コールバック関数一覧

menu((Menu)

メニュー コントロールを表す。

属性 [01]description[02]enabled[03]id[04]idMso[05]idQ[06]image[07]imageMso
[08]insertAfterMso[09]insertAfterQ[10]insertBeforeMso[11]insertBeforeQ[12]keytip[13]label[14]screentip
[15]showImage[16]showLabel[17]size[18]supertip[19]tag[20]visible
共用属性一覧
個別属性
Call[1]getDescription[2]getEnabled[3]getImage[4]getKeytip[5]getLabel[6]getScreentip[7]getShowImage
back[8]getShowLabel[9]getSize[10]getSupertip[11]getVisible[12]onAction
共用コールバック関数一覧

menuSeparator

メニュー アイテム間の区切り線を表す。

属性 [03]id[05]idQ          
[08]insertAfterMso[09]insertAfterQ[10]insertBeforeMso[11]insertBeforeQ
共用属性一覧
個別属性
Call                                   
back
共用コールバック関数一覧
個別コールバック関数

separator

コントロール間の区切り線を表す。

属性 [03]id[05]idQ     
[08]insertAfterMso[09]insertAfterQ[10]insertBeforeMso[11]insertBeforeQ
[20]visible
共用属性一覧
Call                                   
back[11]getVisible
共用コールバック関数一覧

splitButton(Split Button)

スプリット ボタン コントロールを表す。

属性 [02]enabled[03]id[04]idMso[05]idQ[06]image[07]imageMso
[08]insertAfterMso[09]insertAfterQ[10]insertBeforeMso[11]insertBeforeQ[12]keytip[13]label[14]screentip
[15]showImage[16]showLabel[17]size[18]supertip[19]tag[20]visible
共用属性一覧
Call[2]getEnabled[3]getImage[4]getKeytip[5]getLabel[6]getScreentip[7]getShowImage
back[8]getShowLabel[9]getSize[10]getSupertip[11]getVisible
共用コールバック関数一覧

toggleButton(Toggle Button)

トグル ボタン コントロールを表す。

属性 [01]description[02]enabled[03]id[04]idMso[05]idQ[06]image[07]imageMso
[08]insertAfterMso[09]insertAfterQ[10]insertBeforeMso[11]insertBeforeQ[12]keytip[13]label[14]screentip
[15]showImage[16]showLabel[17]size[18]supertip[19]tag[20]visible
共用属性一覧
Call[1]getDescription[2]getEnabled[3]getImage[4]getKeytip[5]getLabel[6]getScreentip[7]getShowImage
back[8]getShowLabel[9]getSize[10]getSupertip[11]getVisible[12]onAction
共用コールバック関数一覧
個別コールバック関数

control(Control Clone)

このタグは”2007 Office Fluent リボンをカスタマイズする (開発者向け)”のパート2では説明されていません。

idMso 属性を使用して既存の組み込みコントロールを複製(クローン)する。

・ただしカスタム コントロールの複製はできない( Controlではカスタム コントロールを作成できない)。

・既存の組み込みコントロールをクローンすると、アイコンやラベルなどに固有ではないプロパティが(クローンに)コピーされる。 

・コントロールのサイズや可視性などの固有のプロパティはコピーされない。 

・これらのプロパティは、コントロールに追加の属性を指定することで設定できる。

属性 [01]description[02]enabled[03]id[04]idMso[05]idQ[06]image[07]imageMso
[08]insertAfterMso[09]insertAfterQ[10]insertBeforeMso[11]insertBeforeQ[12]keytip[13]label[14]screentip
[15]showImage[16]showLabel[17]size[18]supertip[19]tag[20]visible
共用属性一覧
Call[1]getDescription[2]getEnabled[3]getImage[4]getKeytip[5]getLabel[6]getScreentip[7]getShowImage
back[8]getShowLabel[9]getSize[10]getSupertip[11]getVisible[12]onAction
共用コールバック関数一覧

最後に

今回は、Microsoftドキュメントで提供されているXML形式でのFulentリボンの属性とコールバック関数について情報を整理してきました。

本当に表だらけになりましたが、かなりな文字数になってしまったので、次回では簡単な属性についての具体的なXMLのコーディング事例をご紹介すしたいと思います。

最後までご一読いただき誠にありがとうございました。