次の方法で共有


リボン オブジェクト モデルの概要

Visual Studio Tools for Office Runtime が公開する厳密に型指定されたオブジェクト モデルを使用して、実行時にリボン コントロールのプロパティを取得および設定できます。 たとえば、メニュー コントロールを動的に設定したり、コントロールの表示/非表示をコンテキストに応じて切り替えたりすることができます。 また、Office アプリケーションがリボンを読み込む前であれば、タブ、グループ、およびコントロールをリボンに追加することもできます。 詳細については、「読み取り専用になるプロパティの設定」を参照してください。

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

このリボン オブジェクト モデルの主要な要素は、リボン クラス、リボン イベント、およびリボン コントロール クラスです。

リボン クラス

プロジェクトに新しいリボン (ビジュアルなデザイナー) アイテムを追加すると、Visual Studio によって、プロジェクトにリボン クラスが追加されます。 .NET Framework 4 を対象とするプロジェクトの場合、リボン クラスは RibbonBase クラスから継承されます。 .NET Framework 3.5 を対象とするプロジェクトの場合、リボン クラスは OfficeRibbon クラスから継承されます。

このクラスは、リボン コード ファイルとリボン デザイナー コード ファイルを分割する部分クラスとして位置付けられます。

リボン イベント

リボン クラスには、次の 3 つのイベントが含まれています。

.NET Framework 4 を対象とするプロジェクト

.NET Framework 3.5 を対象とするプロジェクト

説明

RibbonBase.Load

OfficeRibbon.Load

Office アプリケーションがリボンのカスタマイズを読み込んだときに発生します。 Load イベント ハンドラーがリボン コード ファイルに自動的に追加されます。 このイベント ハンドラーを使用して、リボンが読み込まれるときにカスタム コードを実行します。

RibbonBase.LoadImage

OfficeRibbon.LoadImage

リボンが読み込まれたときに、リボンのカスタマイズ内のイメージをキャッシュできます。 これにより、リボンのイメージをこのイベント ハンドラーにキャッシュするコードを作成する場合に、パフォーマンスを多少向上させることができます。 詳細については、「LoadImage」を参照してください。

RibbonBase.Close

OfficeRibbon.Close

リボンのインスタンスを閉じたときに発生します。

リボン コントロール

Microsoft.Office.Tools.Ribbon 名前空間には、[ツールボックス][Office リボン コントロール] グループに表示される各コントロールの型が含まれています。

各リボン コントロールの型を次の表に示します。 各コントロールの詳細については、「リボンの概要」を参照してください。

コントロール名

クラス名

[ボックス]

RibbonBox

Button

RibbonButton

ButtonGroup

RibbonButtonGroup

CheckBox

RibbonCheckBox

ComboBox

RibbonComboBox

DropDown

RibbonDropDown

EditBox

RibbonEditBox

Gallery

RibbonGallery

グループ

RibbonGroup

Label

RibbonLabel

Menu

RibbonMenu

Separator

RibbonSeparator

SplitButton

RibbonSplitButton

タブ

RibbonTab

ToggleButton

RibbonToggleButton

Microsoft.Office.Tools.Ribbon 名前空間では、System.Windows.Forms 名前空間に属するコントロール クラスとの名前の衝突を回避するために、型名にプレフィックス "Ribbon" が追加されています。

リボン デザイナーにコントロールを追加すると、そのコントロールのクラスがリボン デザイナー コード ファイルにフィールドとして宣言されます。

リボン コントロールのプロパティを使用する一般的なタスク

各リボン コントロールには、コントロールへのラベルの割り当てやコントロールの表示/非表示の切り替えなど、さまざまなタスクの実行に使用できるプロパティが含まれています。

リボンが読み込まれた後、またはコントロールが動的メニューに追加された後で、プロパティが読み取り専用になることがあります。 詳細については、「読み取り専用になるプロパティの設定」を参照してください。

リボン コントロールのプロパティを使用して実行できる一部のタスクについて、次の表で説明します。

タスク :

方法 :

コントロールの表示/非表示を切り替える。

Visible プロパティを使用します。

コントロールを有効または無効にする。

Enabled プロパティを使用します。

コントロールのサイズを設定する。

ControlSize プロパティを使用します。

コントロールに表示するイメージを取得する。

Image プロパティを使用します。

コントロールのラベルを変更する。

Label プロパティを使用します。

ユーザー定義のデータをコントロールに追加する。

Tag プロパティを使用します。

RibbonBoxRibbonDropDownRibbonGallery

RibbonSplitButton コントロール。

Items プロパティを使用します。

RibbonComboBoxRibbonDropDownRibbonGallery のいずれかのコントロールに項目を追加する。

Items プロパティを使用します。

RibbonMenu にコントロールを追加する。

Items プロパティを使用します。

リボンが Office アプリケーションに読み込まれた後で RibbonMenu にコントロールを追加する場合は、リボンが Office アプリケーションに読み込まれる前に Dynamic プロパティを true に設定する必要があります。 詳細については、「読み取り専用になるプロパティの設定」を参照してください。

RibbonComboBox 内の選択された項目を取得する。

RibbonDropDown または RibbonGallery

SelectedItem プロパティを使用します。 RibbonComboBox では、Text プロパティを使用します。

RibbonTab 上のグループを取得する。

Groups プロパティを使用します。

RibbonGallery に表示する行および列の数を指定する。

RowCount プロパティおよび ColumnCount プロパティを使用します。

読み取り専用になるプロパティの設定

リボンが読み込まれる前にのみ設定できるプロパティがあります。 それらのプロパティは次の 3 つの方法で設定できます。

  • Visual Studio の [プロパティ] ウィンドウ

  • リボン クラスのコンストラクター

  • プロジェクトの ThisAddin、ThisWorkbook、または ThisDocument クラスの CreateRibbonExtensibilityObject メソッド

動的メニューにはいくつかの例外があります。 メニューを含むリボンが読み込まれた後であっても、新しいコントロールを作成し、それらのプロパティを設定し、それらのコントロールを実行時に動的メニューに追加できます。

動的メニューに追加するコントロールのプロパティは、いつでも設定できます。

詳細については、「読み取り専用になるプロパティ」を参照してください。

リボンのコンストラクターでのプロパティの設定

リボン コントロールのプロパティをリボン クラスのコンストラクターで設定できます。 このコードは、InitializeComponent メソッドの呼び出しの後に置く必要があります。 次のコード例は、現在の時刻が太平洋標準時間 (UTC-8) の 17:00 以降である場合に、新しいボタンをグループに追加します。

.NET Framework 4 を対象とするプロジェクトの場合は、次のコードを追加します。

<System.Diagnostics.DebuggerNonUserCode()> _
Public Sub New()
    MyBase.New(Globals.Factory.GetRibbonFactory())

    'This call is required by the Component Designer.
    InitializeComponent()
    Dim MyButton As Microsoft.Office.Tools.Ribbon.RibbonButton = _
        Me.Factory.CreateRibbonButton()
    MyButton.Label = "New Button"
    If System.DateTime.Now.Hour > 16 Then
        Group1.Items.Add(MyButton)
    End If

End Sub
public Ribbon1()
    : base(Globals.Factory.GetRibbonFactory())
{
    InitializeComponent();
    if (System.DateTime.Now.Hour > 16)
    {
        Microsoft.Office.Tools.Ribbon.RibbonButton button =
            this.Factory.CreateRibbonButton();
        button.Label = "New Button";
        group1.Items.Add(button);
    }
}

.NET Framework 3.5 を対象とするプロジェクトの場合は、次のコードを追加します。

<System.Diagnostics.DebuggerNonUserCode()> _
Public Sub New()
    MyBase.New()

    'This call is required by the Component Designer.
    InitializeComponent()
    If DateTime.Now.Hour > 16 Then
        Group1.Items.Add(New RibbonButton())
        CType(Group1.Items.Last(), RibbonButton).Label = "New Button"
    End If
End Sub
public Ribbon1()
{
    InitializeComponent();
    if (DateTime.Now.Hour > 16)
    {
        group1.Items.Add(new RibbonButton());
        ((RibbonButton)group1.Items.Last()).Label = "New Button";
    }

}

Visual Studio 2008 からアップグレードした Visual C# プロジェクトでは、リボン コード ファイルにコンストラクターがあります。

Visual Studio 2010 で作成した Visual Basic プロジェクトまたは Visual C# プロジェクトでは、リボン デザイナー コード ファイルにコンストラクターがあります。 ファイル名は、YourRibbonItem.Designer.cs または YourRibbonItem.Designer.vb です。 Visual Basic プロジェクトでこのファイルを確認するには、まずソリューション エクスプローラーの [すべてのファイルの表示] をクリックする必要があります。

CreateRibbonExtensibilityObject メソッドでのプロパティの設定

プロジェクトの ThisAddin、ThisWorkbook、ThisDocument のいずれかのクラスの CreateRibbonExtensibilityObject メソッドをオーバーライドするときに、リボン コントロールのプロパティを設定できます。 CreateRibbonExtensibilityObject メソッドの詳細については、リボンの概要 を参照してください。

次のコード例は、Excel ブック プロジェクトの ThisWorkbook クラスの CreateRibbonExtensibilityObject メソッドでリボンのプロパティを設定します。

.NET Framework 4 を対象とするプロジェクトの場合は、次のコードを追加します。

Protected Overrides Function CreateRibbonExtensibilityObject() _
    As Microsoft.Office.Core.IRibbonExtensibility
    Dim myCondition As Boolean = True
    If myCondition = True Then
        Dim tempRibbon As New Ribbon1()
        tempRibbon.Tab1.ControlId.ControlIdType = _
            Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office
        tempRibbon.Tab1.ControlId.OfficeId = "TabHome"
        Return Globals.Factory.GetRibbonFactory.CreateRibbonManager _
            (New Microsoft.Office.Tools.Ribbon.IRibbonExtension() {tempRibbon})
    Else
        Dim tempRibbon As New Ribbon2()
        tempRibbon.Tab1.ControlId.ControlIdType = _
            Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office
        tempRibbon.Tab1.ControlId.OfficeId = "TabInsert"
        Return Globals.Factory.GetRibbonFactory.CreateRibbonManager _
            (New Microsoft.Office.Tools.Ribbon.IRibbonExtension() {tempRibbon})
    End If
End Function
protected override Microsoft.Office.Core.IRibbonExtensibility
    CreateRibbonExtensibilityObject()
{
    bool myCondition = false;
    if (myCondition == true)
    {
        Ribbon1 tempRibbon = new Ribbon1();
        tempRibbon.tab1.ControlId.ControlIdType =
            Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office;
        tempRibbon.tab1.ControlId.OfficeId = "TabHome";
        return Globals.Factory.GetRibbonFactory().CreateRibbonManager( 
            new Microsoft.Office.Tools.Ribbon.IRibbonExtension[]
             { tempRibbon });
    }
    else
    {
        Ribbon2 tempRibbon = new Ribbon2();
        tempRibbon.tab1.ControlId.ControlIdType =
            Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office;
        tempRibbon.tab1.ControlId.OfficeId = "TabInsert";
        return Globals.Factory.GetRibbonFactory().CreateRibbonManager(
                            new Microsoft.Office.Tools.Ribbon.IRibbonExtension[] { tempRibbon });
    }
}

.NET Framework 3.5 を対象とするプロジェクトの場合は、次のコードを追加します。

Protected Overrides Function CreateRibbonExtensibilityObject() _
    As Microsoft.Office.Core.IRibbonExtensibility
    Dim myCondition As Boolean = True
    If myCondition = True Then
        Dim tempRibbon As New Ribbon1()
        tempRibbon.Tab1.ControlId.ControlIdType = _
            Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office
        tempRibbon.Tab1.ControlId.OfficeId = "TabHome"
        Return New Microsoft.Office.Tools.Ribbon.RibbonManager _
            (New Microsoft.Office.Tools.Ribbon.OfficeRibbon() {tempRibbon})
    Else
        Dim tempRibbon As New Ribbon2()
        tempRibbon.Tab1.ControlId.ControlIdType = _
            Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office
        tempRibbon.Tab1.ControlId.OfficeId = "TabInsert"
        Return New Microsoft.Office.Tools.Ribbon.RibbonManager _
            (New Microsoft.Office.Tools.Ribbon.OfficeRibbon() {tempRibbon})
    End If
End Function
protected override Microsoft.Office.Core.IRibbonExtensibility
    CreateRibbonExtensibilityObject()
{
    bool myCondition = true;
    if (myCondition == true)
    {
        Ribbon1 tempRibbon = new Ribbon1();
        tempRibbon.tab1.ControlId.ControlIdType = 
            Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office;
        tempRibbon.tab1.ControlId.OfficeId = "TabHome";
        return new Microsoft.Office.Tools.Ribbon.RibbonManager(
            new Microsoft.Office.Tools.Ribbon.OfficeRibbon[] 
                { tempRibbon });
    }
    else
    {
        Ribbon2 tempRibbon = new Ribbon2();
        tempRibbon.tab1.ControlId.ControlIdType = 
            Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office;
        tempRibbon.tab1.ControlId.OfficeId = "TabInsert";
        return new Microsoft.Office.Tools.Ribbon.RibbonManager(
            new Microsoft.Office.Tools.Ribbon.OfficeRibbon[] 
                { tempRibbon });
    }
}

読み取り専用になるプロパティ

リボンが読み込まれる前にのみ設定できるプロパティを次の表に示します。

注意

動的メニューのコントロールのプロパティは、いつでも設定できます。 この場合、次の表の内容は該当しません。

プロパティ

リボン コントロール クラス

BoxStyle

RibbonBox

ButtonType

RibbonSplitButton

ColumnCount

RibbonGallery

ControlId

RibbonTab

DialogLauncher

RibbonGroup

動的

RibbonMenu

Global

OfficeRibbon

グループ

RibbonTab

ImageName

RibbonButton

RibbonComboBox

RibbonDialogLauncher

RibbonDropDown

RibbonEditBox

RibbonGallery

RibbonMenu

RibbonSplitButton

RibbonToggleButton

ItemSize

RibbonMenu

RibbonSplitButton

MaxLength

RibbonComboBox

RibbonEditBox

名前

RibbonComponent

[位置]

RibbonButton

RibbonCheckBox

RibbonGallery

RibbonGroup

RibbonMenu

RibbonSeparator

RibbonSplitButton

RibbonTab

RibbonToggleButton

RibbonType

OfficeRibbon

RowCount

RibbonGallery

ShowItemImage

RibbonComboBox

RibbonDropDown

RibbonGallery

ShowItemLabel

RibbonDropDown

RibbonGallery

ShowItemSelection

RibbonGallery

SizeString

RibbonComboBox

RibbonDropDown

RibbonEditBox

StartFromScratch

OfficeRibbon

[タブ]

OfficeRibbon

タイトル

RibbonSeparator

Outlook インスペクターに表示されるリボンのプロパティの設定

ユーザーがリボンを含むインスペクターを開くたびにリボンの新しいインスタンスが作成されます。 ただし、上の表に示すプロパティは、リボンの最初のインスタンスが作成される前にのみ設定できます。 最初のインスタンスが作成されると、そのインスタンスによって Outlook がリボンの読み込みに使用する XML ファイルを定義するため、これらのプロパティは読み取り専用になります。

リボンの他のインスタンスが作成されたときにこれらのプロパティを別の値に設定する条件ロジックがある場合、そのコードは何の効果ももたらしません。

注意

Outlook リボンに追加した各コントロールで Name プロパティが設定されるようにしてください。 実行時にコントロールを Outlook リボンに追加する場合は、このプロパティをコードで設定する必要があります。 デザイン時にコントロールを Outlook リボンに追加する場合は、Name プロパティが自動的に設定されます。

リボン コントロール イベント

各コントロール クラスに 1 つ以上のイベントが含まれています。 次の表は、それらのイベントについての説明です。

イベント

説明

Click

コントロールがクリックされたときに発生します。

TextChanged

編集ボックスまたはコンボ ボックス内のテキストが変更されたときに発生します。

ItemsLoading

コントロールの Items コレクションが Office から要求されたときに発生します。 Office は、コードがコントロールのプロパティを変更するか、IRibbonUI.InvalidateControl(String) メソッドが呼び出されるまで、Items コレクションをキャッシュします。

ButtonClick

RibbonGallery または RibbonDropDown 内のボタンがクリックされたときに発生します。

SelectionChanged

RibbonDropDown または RibbonGallery 内の選択項目が変更されたときに発生します。

DialogLauncherClick

グループの右下にあるダイアログ ランチャー アイコンがクリックされたときに発生します。

これらのイベントのイベント ハンドラーには、次の 2 つのパラメーターがあります。

パラメーター

説明

sender

イベントを発生させたコントロールを表す Object

e

Microsoft.Office.Core.IRibbonControl を格納している RibbonControlEventArgs。 このコントロールを使用すると、Visual Studio Tools for Office Runtime によって提供されるリボン オブジェクト モデルには用意されていないプロパティにアクセスできます。

参照

処理手順

方法 : リボンのカスタマイズの概要

チュートリアル : リボン デザイナーを使用したカスタム タブの作成

チュートリアル : 実行時のリボン コントロールの更新

方法 : 組み込みタブをカスタマイズする

方法 : Microsoft Office メニューをカスタマイズする

方法 : リボンをリボン デザイナーからリボン XML にエクスポートする

方法 : アドインのユーザー インターフェイス エラーを表示する

参照

Microsoft.Office.Tools.Ribbon

概念

実行時のリボンへのアクセス

リボンの概要

リボン デザイナー

Outlook のリボンのカスタマイズ