Ribbon XML

リボン (XML) 項目では XML を使用してリボンをカスタマイズできます。 リボン (ビジュアル デザイナー) 項目ではサポートされていない方法でリボンをカスタマイズする場合は、リボン (XML) 項目を使用します。 各項目で実行できる操作の比較については、「リボンの概要」をご覧ください。

適用対象: このトピックの情報は、Excel、InfoPath 2013 と InfoPath 2010、Outlook、PowerPoint、Project、Visio、Word のアプリケーションのドキュメント レベルのプロジェクトおよび VSTO アドイン プロジェクトに適用されます。 詳細については、「Office アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

リボン (XML) 項目をプロジェクトに追加する

[新しい項目の追加] ダイアログ ボックスから、 リボン (XML) 項目を任意の Office プロジェクトに追加できます。 Visual Studio によってプロジェクトに次のファイルが自動的に追加されます。

  • リボン XML ファイル。 このファイルは、リボン ユーザー インターフェイス (UI) を定義します。 タブ、グループ、およびコントロールなどの UI 要素を追加するには、このファイルを使用します。 詳細については、このトピックで後述する「リボン XML ファイル リファレンス」を参照してください。

  • リボン コード ファイル。 このファイルには リボン クラスが含まれています。 このクラスの名前は、 [新しい項目の追加] ダイアログ ボックスで リボン (XML) 項目に指定した名前になります。 Microsoft Office アプリケーションでは、このクラスのインスタンスを使用して、カスタム リボンを読み込みます。 詳細については、このトピックで後述する「リボン クラスのリファレンス」を参照してください。

    既定では、これらのファイルによって、カスタム グループがリボンの [アドイン] タブに追加されます。

Microsoft Office アプリケーションでカスタム リボンを表示する

リボン (XML) 項目をプロジェクトに追加した後に、CreateRibbonExtensibilityObject メソッドをオーバーライドし Office アプリケーションにリボン XML クラスを返すコードを ThisAddinThisWorkbook、または ThisDocument クラスに追加する必要があります。

次のコード例は CreateRibbonExtensibilityObject メソッドをオーバーライドして、MyRibbon という名前のリボン XML クラスを返します。

protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
{
    return new MyRibbon();
}

カスタムのリボンの動作を定義する

コールバック メソッドを作成することで、リボン上のボタンのクリックなどのユーザー操作に応答できます。 コールバック メソッドは Windows フォーム コントロールのイベントと似ていますが、UI 要素の XML の属性によって識別されます。 リボン クラスでメソッドを記述すると、コントロールは属性値と同じ名前を持つメソッドを呼び出します。 たとえば、ユーザーがリボン上のボタンをクリックしたときに呼び出されるコールバック メソッドを作成できます。 コールバック メソッドを作成するには、2 つの手順が必要です。

  • コード内のコールバック メソッドを識別するリボン XML ファイル内のコントロールに、属性を割り当てます。

  • リボン クラスでコールバック メソッドを定義します。

Note

Outlook では追加の手順が必要です。 詳細については、「Outlook のリボンのカスタマイズ」を参照してください。

リボンからアプリケーションを自動化する方法を示すチュートリアルについては、「チュートリアル : リボン XML を使用してカスタム タブを作成する」をご覧ください。

コントロールにコールバック メソッドを割り当てる

コールバック メソッドをリボン XML ファイル内のコントロールに割り当てるには、コールバック メソッドの種類とメソッドの名前を指定する属性を追加します。 たとえば、次の要素は OnToggleButton1 という名前の OnToggleButton1」をご覧ください。

<toggleButton id="toggleButton1" onAction="OnToggleButton1" />

onAction は、特定のコントロールに関連付けられている主なタスクをユーザーが実行すると呼び出されます。 たとえば、トグル ボタンの onAction コールバック メソッドは、ユーザーがボタンをクリックするとが呼び出されます。

属性で指定するメソッドは、どんな名前をつけてもかまいません。 ただし、その名前はリボンのコード ファイルで定義するメソッドの名前と一致する必要があります。

リボン コントロールに割り当てることができるコールバック メソッドにはさまざまな種類があります。 各コントロールの使用可能なコールバック メソッドの完全な一覧については、開発者向けの Office (2007) リボンのユーザー インターフェイスをカスタマイズする (パート 3/3) に関する技術記事を参照してください。

コールバック メソッドを定義する

リボン クラスのコールバック メソッドはリボン コード ファイルで定義します。 コールバック メソッドにはいくつかの要件があります。

  • コールバック メソッドはパブリック メソッドとして宣言されなければなりません。

  • コールバック メソッドの名前は、リボン XML ファイル内のコントロールに割り当てたコールバック メソッドの名前と一致する必要があります。

  • コールバック メソッドのシグネチャは、関連付けられているリボン コントロールの利用可能なコールバック メソッドの型のシグネチャと一致する必要があります。

    リボン コントロールのコールバック メソッドのシグネチャの完全な一覧については、開発者向けの Office (2007) リボンのユーザー インターフェイスをカスタマイズする (パート 3/3) に関する技術記事を参照してください。 Visual Studio では、リボン コード ファイルで作成するコールバック メソッドの IntelliSense サポートは提供されていません。 有効なシグネチャに一致しないコールバック メソッドを作成した場合、コードはコンパイルされますが、ユーザーがコントロールをクリックしても、何も起こりません。

    すべてのコールバック メソッドには、メソッドを呼び出すコントロールを表す IRibbonControl パラメーターがあります。 このパラメーターを使用して、同じコールバック メソッドを複数のコントロールで再利用できます。 次のコード例は、ユーザーがクリックするコントロールに応じて異なるタスクを実行する onAction コールバック メソッドを示しています。

    public void OnActionCallback(Office.IRibbonControl control, bool isPressed)
    {
        if (control.Id == "checkBox1")
        {
            MessageBox.Show("You clicked " + control.Id);
        }
        else
        {
            MessageBox.Show("You clicked a different control.");
        }
    }
    

リボン XML ファイル リファレンス

リボン XML ファイルに要素と属性を追加することにより、カスタム リボンを定義できます。 既定では、リボン XML ファイルには次の XML が含まれています。

<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="OnLoad">
  <ribbon>
    <tabs>
      <tab idMso="TabAddIns">
        <group id="MyGroup"
               label="My Group">
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

次の表は、リボン XML ファイルの既定の要素について説明しています。

要素 説明
Customui VSTO アドイン プロジェクトのカスタム リボンを表します。
ribbon リボンを表します。
タブ [リボン] タブのセットを表します。
タブ 単独の [リボン] タブを表します。
group [リボン] タブのコントロールのグループを表します。

これらの要素には、カスタム リボンの外観と動作を指定する属性があります。 次の表は、リボン XML ファイルの既定の属性について説明しています。

Attribute 親要素 説明
onLoad Customui アプリケーションでリボンを読み込むときに呼び出されるメソッドを識別します。
idMso タブ リボンに表示する組み込みタブを識別します。
id group グループを識別します。
label group グループに表示するテキストを指定します。

リボン XML ファイルの既定の要素と属性は、使用できる要素と属性の小さなサブセットです。 使用可能な要素と属性の完全な一覧については、開発者向けの Office (2007) リボンのユーザー インターフェイスをカスタマイズする (パート 2/3) に関する技術記事を参照してください。

リボン クラスリファレンス

Visual Studio は、リボン コード ファイルにリボン クラスを生成します。 このクラスに、リボン上のコントロールのコールバック メソッドを追加します。 このクラスは、 IRibbonExtensibility インターフェイスを実装します。

次の表はこのクラスの既定のメソッドについて説明しています。

メソッド 説明
GetCustomUI リボン XML ファイルの内容を返します。 Microsoft Office アプリケーションではこのメソッドを呼び出して、カスタム リボンのユーザー インターフェイスを定義する XML 文字列を取得します。 このメソッドは、 GetCustomUI メソッドを実装します。 注:GetCustomUI は、リボン XML ファイルの内容を返すためだけに実装する必要があります。VSTO アドインの初期化のために使ってはいけません。 具体的には、 GetCustomUI の実装で、ダイアログ ボックスや他のウィンドウを表示しようとしてはいけません。 それ以外の場合は、カスタム リボンが正しく動作しない可能性があります。 VSTO アドインを初期化するコードを実行する必要がある場合は、そのコードを ThisAddIn_Startup イベント ハンドラーに追加します。
OnLoad IRibbonControl パラメーターを Ribbon フィールドに割り当てます。 Microsoft Office アプリケーションでは、カスタム リボンが読み込まれるときに、このメソッドを呼び出します。 このフィールドを使用すると、カスタム リボンを動的に更新することができます。 詳細については、開発者向けの Office (2007) リボンのユーザー インターフェイスをカスタマイズする (パート 1/3) に関する技術記事を参照してください。
GetResourceText GetCustomUI メソッドによって呼び出され、リボン XML ファイルの内容を取得します。