リボン オブジェクト モデルの概要
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種類のイベントが含まれています:
イベント |
説明 |
---|---|
Officeアプリケーションがリボンのカスタマイズを読み込むときに発生します。Load のイベント ハンドラーがリボン コード ファイルに自動的に追加されます。リボンが読み込まれるときにカスタム コードを実行するには、このイベント ハンドラーを使用します。 |
|
リボンが読み込まれたときに、リボンのカスタマイズのイメージをキャッシュすることもできます。このイベント ハンドラーのリボン イメージをキャッシュするコードを作成する場合に、パフォーマンスを多少向上させることができます。詳細については、「LoadImage」を参照してください。 |
|
リボンのインスタンスを閉じたときに発生します。 |
リボン コントロール
Microsoft.Office.Tools.Ribbon 名前空間には、[ツールボックス] の [Office リボン コントロール] グループに表示される各コントロールの型が含まれています。
次の表は Ribbon の各コントロールの型を示します。各コントロールの詳細については、「リボンの概要」を参照してください。
コントロール名 |
クラス名 |
---|---|
ボックス |
|
ボタン |
|
ButtonGroup |
|
CheckBox |
|
ComboBox |
|
DropDown |
|
EditBox |
|
Gallery |
|
グループ |
|
ラベル |
|
メニュー |
|
[Separator] |
|
SplitButton |
|
Tab |
|
ToggleButton |
Microsoft.Office.Tools.Ribbon 名前空間では、System.Windows.Forms 名前空間に属するコントロール クラスとの名前の衝突を回避するために、型名にプレフィックス "Ribbon" が追加されています。
リボン デザイナーにコントロールを追加すると、そのコントロールのクラスがリボン デザイナー コード ファイルにフィールドとして宣言されます。
リボン コントロールのプロパティを使用する一般的なタスク
Ribbon の各コントロールは、コントロール ラベルを割り当てるか、コントロールを非表示にし、表示するのようなさまざまなタスクの実行に使用できるプロパティが含まれています。
場合によっては、プロパティはコントロールのリボンが読み込まれた後、または動的メニューに追加された後で読み取り専用になります。詳細については、「読み取り専用になるプロパティの設定」を参照してください。
次の表は、Ribbon のコントロールのプロパティを使用して実行できるタスクの一部を示します。
タスク : |
方法 : |
---|---|
コントロールの表示/非表示を切り替える。 |
Visible プロパティを使用します。 |
コントロールを有効または無効にする。 |
Enabled プロパティを使用します。 |
コントロールのサイズを設定する。 |
ControlSize プロパティを使用します。 |
コントロールに表示するイメージを取得する。 |
Image プロパティを使用します。 |
コントロールのラベルを変更する。 |
Label プロパティを使用します。 |
ユーザー定義のデータをコントロールに追加する。 |
Tag プロパティを使用します。 |
RibbonBox、RibbonDropDown、RibbonGallery、 RibbonSplitButton コントロール。 |
Items プロパティを使用します。 |
RibbonComboBox、RibbonDropDown、RibbonGallery のいずれかのコントロールに項目を追加する。 |
Items プロパティを使用します。 |
RibbonMenu にコントロールを追加する。 |
Items プロパティを使用します。 リボンがOfficeアプリケーションに読み込まれる前に、リボンがOfficeアプリケーションに読み込まれた後 RibbonMenu にコントロールを追加するには、true に Dynamic のプロパティを設定する必要があります。詳細については、「読み取り専用になるプロパティの設定」を参照してください。 |
RibbonComboBox 内の選択された項目を取得する。 |
SelectedItem プロパティを使用します。RibbonComboBox では、Text プロパティを使用します。 |
RibbonTab 上のグループを取得する。 |
Groups プロパティを使用します。 |
RibbonGallery に表示する行および列の数を指定する。 |
RowCount プロパティおよび ColumnCount プロパティを使用します。 |
読み取り専用になるプロパティの設定
一部のプロパティは、リボンが読み込まれる前にのみ設定できます。それらのプロパティは次の 3 つの方法で設定できます。
Visual Studio の [プロパティ] ウィンドウ
Ribbon のクラスのコンストラクター。
プロジェクトの ThisAddin、ThisWorkbook、または ThisDocument クラスの CreateRibbonExtensibilityObject メソッド
動的メニューにはいくつかの例外があります。メニューを含むリボンが読み込まれた後であっても、新しいコントロールを作成し、プロパティを設定してから次を実行時に動的メニューに追加します。
動的メニューに追加するコントロールのプロパティは、いつでも設定できます。
詳細については、「読み取り専用になるプロパティ」を参照してください。
リボンのコンストラクターでのプロパティの設定
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 プロジェクトでこのファイルを確認するには、まずソリューション エクスプローラーの [すべてのファイルの表示] をクリックする必要があります。
CreateRibbonExtensibilityObject メソッドでのプロパティの設定
プロジェクトの 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 });
}
}
読み取り専用になるプロパティ
リボンが読み込まれる前にのみ設定できるプロパティを次の表に示します。
[!メモ]
動的メニューのコントロールのプロパティは、いつでも設定できます。この場合、次の表の内容は該当しません。
プロパティ |
リボン コントロール クラス |
---|---|
BoxStyle |
|
ButtonType |
|
ColumnCount |
|
ControlId |
|
DialogLauncher |
|
動的 |
|
グローバル |
|
グループ |
|
ImageName |
|
ItemSize |
|
MaxLength |
|
名前 |
|
[位置] |
|
RibbonType |
|
RowCount |
|
ShowItemImage |
|
ShowItemLabel |
|
ShowItemSelection |
|
SizeString |
|
StartFromScratch |
|
[タブ] |
|
タイトル |
Outlook インスペクターに表示されるリボンのプロパティの設定
リボンの新しいインスタンスが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 によって提供されるリボン オブジェクト モデルには用意されていないプロパティにアクセスできます。 |
参照
処理手順
チュートリアル : リボン デザイナーを使用したカスタム タブの作成
方法 : リボンをリボン デザイナーからリボン XML にエクスポートする
方法 : アドインのユーザー インターフェイス エラーを表示する