リボンXMLの利用(基礎編)

リボンデザイナの回(その①その②)から、だいぶ、空きましたが、リボンXML を利用した Office 2007 ユーザーインターフェースのカスタマイズのご紹介です。

今回はリボンの基礎編についてご紹介したいと思います。

リボンのXMLによるカスタマイズは XML ということで引かれる方も多いとは思いますが、(私もそうでした。それが原因でご紹介が遅れていたわけではないです。。。)

以外と分かりやすいです。

内部的な動作はちょっと難しいですが、そこはお作法なので、こういうものだとご理解いただければと思います。

リボンXMLのカスタマイズはデザイナベースのカスタマイズと違い、以下のようなことが可能です。

l カスタム タブまたは組み込みタブに組み込みグループを追加します。

l カスタム グループに組み込みコントロールを追加します。

l カスタム コードを追加して、組み込みコントロールのイベント ハンドラをオーバーライドします。

l クイック アクセス ツール バーをカスタマイズします。

l 修飾識別子を使用して、アドイン間でリボンのカスタマイズを共有します。

l 既存タブの非表示。

詳細は以下をご確認ください。

リボンの概要

https://msdn.microsoft.com/ja-jp/library/bb386097.aspx

実際のリボンXMLの作成についてですが、以下をご確認ください。

手順:

1. アドインやドキュメントの「プロジェクト」から[ユーザーコントロール]-「リボンXML」を追加します。

2. リボンXMLを追加すると「Ribbon1.cs (またはRibbon1.vb)」と「Ribbon1.xml」が追加されます。

3. 「Ribbon1.cs (またはRibbon1.vb)」を確認すると以下のようなコメントアウトが記載されています。

ここでは C# 版です。

// TODO: リボン (XML) アイテムを有効にするには、次の手順に従います。

// 1: 次のコード ブロックを ThisAddin、ThisWorkbook、ThisDocument のいずれかのクラスにコピーします。

// protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()

// {

// return new Ribbon1();

// }

// 2. ボタンのクリックなど、ユーザーの操作を処理するためのコールバック メソッドを、このクラスの

// "リボンのコールバック" 領域に作成します。メモ: このリボンがリボン デザイナからエクスポートされたものである場合は、

// イベント ハンドラ内のコードをコールバック メソッドに移動し、リボン拡張機能 (RibbonX) のプログラミング モデルで

// 動作するように、コードを変更します。

// 3. リボン XML ファイルのコントロールタグに、コードで適切なコールバック メソッドを識別するための属性を割り当てます。

// 詳細については、Visual Studio Tools for Office ヘルプにあるリボン XML のドキュメントを参照してください。

4. 上記、1:のコードを利用するいずれかのクラスにコピーします。

※ここではThisDocumentを利用しています。

        protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()

        {

            return new Ribbon1();

        }

また、Ribbon1.xml を確認してみます。以下のような構造になっています。

 

<?xml version="1.0" encoding="UTF-8"?>

<customUI xmlns="https://schemas.microsoft.com/office/2006/01/customui" onLoad="Ribbon_Load">

  <ribbon>

    <tabs>

      <tab idMso="TabAddIns">

        <group id="MyGroup"

               label="My Group">

        </group>

      </tab>

    </tabs>

  </ribbon>

</customUI>

 

5. ここで一旦デバッグしてみます。以下のような感じで XML の構造がリボンの形になっていることがお分かりになるかと思います。

 リボンXML既定

 

6. 次にコマンドを実装してみたいと思います。

 次の XML を Ribbon1.xml "Group label" タブの後にに追記します。

 

          <button id="リボンテスト" label="リボンテスト"
size="large" imageMso="HappyFace" onAction="RibbonTest"/>

imageMSO では既定のイメージコントロールを利用することが可能です。

これを利用することで既定のコントロールの動作の置き換えができます。

また、以下のよにリボンXML用のスニペットが用意されているので非常に開発はしやすいかと思います。

リボンXMLはかなり明示的なつくりですので、コーディングにあまり無駄はありません。

 

リボンのスニペット

 

 7. 再度、デバッグを実行してみます。以下のように追記したコードのリボンが実装されているのが分かるかと思います。

CustomButton

 

8. 次にこのコマンドのコールバックイベントを実装してみたいと思います。

「Ribbon1.cs (またはRibbon1.vb)」のリボンのコールバックイベント領域に以下のコードを実装します。

        public void RibbonTest(Microsoft.Office.Core.IRibbonControl control)

        {

            MessageBox.Show("Test");

        }

9.  再度、デバッグしてコマンドをクリックしてみます。

メッセージボックスが表示されたことが分かるかと思います。

 

このようにリボンXMLを利用する上でのお作法をご理解いただけたかと思います。

次は応用編として既存のタブやコマンドとの連携に触れてみたいと思います。