次の方法で共有


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

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

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

このリボン オブジェクト モデルは、主に リボン クラスリボン イベントリボン コントロール クラスで構成されます。

リボン クラス

新しい リボン (ビジュアル デザイナー) 項目をプロジェクトに追加すると、Visual Studio によって リボン クラスがプロジェクトに追加されます。 リボン クラスは、RibbonBase クラスから継承します。

このクラスは、リボン コード ファイルとリボン デザイナー コード ファイルの間で分割される部分クラスとして表示されます。

リボン イベント

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

Event Description
Load Office アプリケーションがリボンのカスタマイズを読み込むときに発生します。 Load イベント ハンドラーは、リボン コード ファイルに自動的に追加されます。 リボンが読み込まれるときにカスタム コードを実行するには、このイベント ハンドラーを使用します。
LoadImage リボンの読み込み時に、リボンのカスタマイズでイメージをキャッシュできます。 リボン イメージをこのイベント ハンドラーにキャッシュするコードを記述すると、パフォーマンスが若干向上します。 詳細については、LoadImageを参照してください。
Close リボン インスタンスが閉じると発生します。

リボン コントロール

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

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

コントロール名 クラス名
ボックス RibbonBox
ボタン RibbonButton
ButtonGroup RibbonButtonGroup
CheckBox RibbonCheckBox
ComboBox RibbonComboBox
DropDown RibbonDropDown
EditBox RibbonEditBox
ギャラリー RibbonGallery
グループ RibbonGroup
ラベル RibbonLabel
メニュー RibbonMenu
分離器 RibbonSeparator
スプリットボタン RibbonSplitButton
タブ RibbonTab
切り替えボタン RibbonToggleButton

Microsoft.Office.Tools.Ribbon名前空間では、これらの型の "リボン" プレフィックスを使用して、System.Windows.Forms名前空間内のコントロール クラスの名前との名前の競合を回避します。

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

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

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

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

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

このタスクの場合: これを行います。
コントロールを表示または非表示にする。 Visible プロパティを使用します。
コントロールを有効または無効にします。 Enabledプロパティを使います。
コントロールのサイズを設定します。 ControlSize プロパティを使用します。
コントロールに表示されるイメージを取得します。 Image プロパティを使用します。
コントロールのラベルを変更します。 Label プロパティを使用します。
ユーザー定義データをコントロールに追加します。 Tag プロパティを使用します。
RibbonBoxRibbonDropDownRibbonGallery のいずれかの中にあるアイテムを取得します。

RibbonSplitButton コントロール。
Items プロパティを使用します。
RibbonComboBoxRibbonDropDown、またはRibbonGallery コントロールに項目を追加します。 Items プロパティを使用します。
RibbonMenuにコントロールを追加します。 Items プロパティを使用します。

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

RibbonDropDown または RibbonGallery
SelectedItem プロパティを使用します。 RibbonComboBoxの場合は、Text プロパティを使用します。
RibbonTabのグループを取得します。 Groups プロパティを使用します。
RibbonGalleryに表示される行と列の数を指定します。 RowCountプロパティとColumnCountプロパティを使用します。

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

一部のプロパティは、リボンが読み込まれる前にのみ設定できます。 これらのプロパティを設定するには、次の 3 つの場所があります。

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

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

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

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

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

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

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

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

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

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 Studio 2008 からアップグレードした Visual C# プロジェクトでは、リボン コード ファイルにコンストラクターが表示されます。

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

CreateRibbonExtensibilityObject メソッドでプロパティを設定する

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

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

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

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

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

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

動的メニューのコントロールのプロパティはいつでも設定できます。 この場合、このテーブルは適用されません。

プロパティ リボン コントロール クラス
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

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

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

リボンの他のインスタンスの作成時にこれらのプロパティのいずれかを別の値に設定する条件付きロジックがある場合、このコードは無効になります。

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

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

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

Event Description
Click コントロールがクリックされたときに発生します。
TextChanged 編集ボックスまたはコンボ ボックスのテキストが変更されたときに発生します。
項目の読み込み中 コントロールの Items コレクションが Office によって要求されるときに発生します。 コードがコントロールのプロパティを変更するか、 InvalidateControl メソッドを呼び出すまで、Office は Items コレクションをキャッシュします。
ボタンクリック RibbonGalleryまたはRibbonDropDownのボタンがクリックされたときに発生します。
選択変更 RibbonDropDownまたはRibbonGalleryの選択が変更されたときに発生します。
DialogLauncherClick グループの右下隅にあるダイアログ 起動ツール アイコンがクリックされたときに発生します。

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

パラメーター Description
sender イベントを発生させたコントロールを表す Object
e RibbonControlEventArgsを含むIRibbonControl。 このコントロールを使用して、Visual Studio Tools for Office ランタイムによって提供されるリボン オブジェクト モデルで使用できないプロパティにアクセスします。