リボン オブジェクト モデルの概要
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 を対象とするプロジェクト |
説明 |
---|---|---|
Office アプリケーションがリボンのカスタマイズを読み込んだときに発生します。 Load イベント ハンドラーがリボン コード ファイルに自動的に追加されます。 このイベント ハンドラーを使用して、リボンが読み込まれるときにカスタム コードを実行します。 |
||
リボンが読み込まれたときに、リボンのカスタマイズ内のイメージをキャッシュできます。 これにより、リボンのイメージをこのイベント ハンドラーにキャッシュするコードを作成する場合に、パフォーマンスを多少向上させることができます。 詳細については、「LoadImage」を参照してください。 |
||
リボンのインスタンスを閉じたときに発生します。 |
リボン コントロール
Microsoft.Office.Tools.Ribbon 名前空間には、[ツールボックス] の [Office リボン コントロール] グループに表示される各コントロールの型が含まれています。
各リボン コントロールの型を次の表に示します。 各コントロールの詳細については、「リボンの概要」を参照してください。
コントロール名 |
クラス名 |
---|---|
[ボックス] |
|
Button |
|
ButtonGroup |
|
CheckBox |
|
ComboBox |
|
DropDown |
|
EditBox |
|
Gallery |
|
グループ |
|
Label |
|
Menu |
|
Separator |
|
SplitButton |
|
タブ |
|
ToggleButton |
Microsoft.Office.Tools.Ribbon 名前空間では、System.Windows.Forms 名前空間に属するコントロール クラスとの名前の衝突を回避するために、型名にプレフィックス "Ribbon" が追加されています。
リボン デザイナーにコントロールを追加すると、そのコントロールのクラスがリボン デザイナー コード ファイルにフィールドとして宣言されます。
リボン コントロールのプロパティを使用する一般的なタスク
各リボン コントロールには、コントロールへのラベルの割り当てやコントロールの表示/非表示の切り替えなど、さまざまなタスクの実行に使用できるプロパティが含まれています。
リボンが読み込まれた後、またはコントロールが動的メニューに追加された後で、プロパティが読み取り専用になることがあります。 詳細については、「読み取り専用になるプロパティの設定」を参照してください。
リボン コントロールのプロパティを使用して実行できる一部のタスクについて、次の表で説明します。
タスク : |
方法 : |
---|---|
コントロールの表示/非表示を切り替える。 |
Visible プロパティを使用します。 |
コントロールを有効または無効にする。 |
Enabled プロパティを使用します。 |
コントロールのサイズを設定する。 |
ControlSize プロパティを使用します。 |
コントロールに表示するイメージを取得する。 |
Image プロパティを使用します。 |
コントロールのラベルを変更する。 |
Label プロパティを使用します。 |
ユーザー定義のデータをコントロールに追加する。 |
Tag プロパティを使用します。 |
RibbonBox、RibbonDropDown、RibbonGallery、 RibbonSplitButton コントロール。 |
Items プロパティを使用します。 |
RibbonComboBox、RibbonDropDown、RibbonGallery のいずれかのコントロールに項目を追加する。 |
Items プロパティを使用します。 |
RibbonMenu にコントロールを追加する。 |
Items プロパティを使用します。 リボンが Office アプリケーションに読み込まれた後で RibbonMenu にコントロールを追加する場合は、リボンが Office アプリケーションに読み込まれる前に Dynamic プロパティを true に設定する必要があります。 詳細については、「読み取り専用になるプロパティの設定」を参照してください。 |
RibbonComboBox 内の選択された項目を取得する。 |
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 |
|
ButtonType |
|
ColumnCount |
|
ControlId |
|
DialogLauncher |
|
動的 |
|
Global |
|
グループ |
|
ImageName |
|
ItemSize |
|
MaxLength |
|
名前 |
|
[位置] |
|
RibbonType |
|
RowCount |
|
ShowItemImage |
|
ShowItemLabel |
|
ShowItemSelection |
|
SizeString |
|
StartFromScratch |
|
[タブ] |
|
タイトル |
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 にエクスポートする
方法 : アドインのユーザー インターフェイス エラーを表示する