次の方法で共有


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

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

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

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

リボン クラス

プロジェクトに [リボン (ビジュアルなデザイナー)] の新しい項目を追加すると、Visual Studioはプロジェクトに Ribbon のクラスを追加します。Ribbon クラスは、RibbonBase クラスを継承します。

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

リボン イベント

Ribbon のクラスは次の3種類のイベントが含まれています:

イベント

説明

RibbonBase.Load

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

RibbonBase.LoadImage

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

RibbonBase.Close

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

リボン コントロール

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

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

コントロール名

クラス名

ボックス

RibbonBox

ボタン

RibbonButton

ButtonGroup

RibbonButtonGroup

CheckBox

RibbonCheckBox

ComboBox

RibbonComboBox

DropDown

RibbonDropDown

EditBox

RibbonEditBox

Gallery

RibbonGallery

グループ

RibbonGroup

ラベル

RibbonLabel

メニュー

RibbonMenu

[Separator]

RibbonSeparator

SplitButton

RibbonSplitButton

Tab

RibbonTab

ToggleButton

RibbonToggleButton

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

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

Bb608623.collapse_all(ja-jp,VS.110).gifリボン コントロールのプロパティを使用する一般的なタスク

Ribbon の各コントロールは、コントロール ラベルを割り当てるか、コントロールを非表示にし、表示するのようなさまざまなタスクの実行に使用できるプロパティが含まれています。

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

次の表は、Ribbon のコントロールのプロパティを使用して実行できるタスクの一部を示します。

タスク :

方法 :

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

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

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

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

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

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

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

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

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

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

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

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

RibbonBoxRibbonDropDownRibbonGallery

RibbonSplitButton コントロール。

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

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

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

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

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

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

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

RibbonDropDown または RibbonGallery

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

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

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

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

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

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

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

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

  • Ribbon のクラスのコンストラクター。

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

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

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

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

Bb608623.collapse_all(ja-jp,VS.110).gifリボンのコンストラクターでのプロパティの設定

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

次のコードを追加します。

<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);
    }
}

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

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

Bb608623.collapse_all(ja-jp,VS.110).gifCreateRibbonExtensibilityObject メソッドでのプロパティの設定

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

Excelブックの ThisWorkbook クラスの CreateRibbonExtensibilityObject のメソッドを次の例のセットのリボンのプロパティを射影します。

次のコードを追加します。

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 });
    }
}

Bb608623.collapse_all(ja-jp,VS.110).gif読み取り専用になるプロパティ

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

[!メモ]

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

プロパティ

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

BoxStyle

RibbonBox

ButtonType

RibbonSplitButton

ColumnCount

RibbonGallery

ControlId

RibbonTab

DialogLauncher

RibbonGroup

動的

RibbonMenu

グローバル

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

Bb608623.collapse_all(ja-jp,VS.110).gifOutlook インスペクターに表示されるリボンのプロパティの設定

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

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

[!メモ]

[名前] のプロパティが、Outlookリボンに追加した各コントロールに設定されていることを確認します。実行時にコントロールをOutlookリボンに追加すると、このプロパティをコードで設定する必要があります。デザイン時にOutlookリボンにコントロールを追加すると、Name のプロパティが自動的に設定されます。

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

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

イベント

説明

Click

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

TextChanged

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

ItemsLoading

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

ButtonClick

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

SelectionChanged

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

DialogLauncherClick

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

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

パラメーター

説明

sender

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

e

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

参照

処理手順

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

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

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

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

方法: Backstage ビューにコントロールを追加する

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

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

関連項目

Microsoft.Office.Tools.Ribbon

概念

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

リボン デザイナー

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

その他の技術情報

リボンの概要