操作ウィンドウの概要
操作ウィンドウは、特定の Microsoft Office Word 文書または Microsoft Office Excel ブックにアタッチされる、カスタマイズ可能な [ドキュメント アクション] 作業ウィンドウです。操作ウィンドウは、Excel の [XML ソース] 作業ウィンドウや Word の [スタイルと書式] 作業ウィンドウなどの他の組み込み作業ウィンドウと同様に、Office 作業ウィンドウ内でホストされます。操作ウィンドウのユーザー インターフェイスは、Windows フォーム コントロールまたは WPF コントロールを使用してデザインできます。
対象: このトピックの情報は、Excel 2013 と Excel 2010、および Word 2013 と Word 2010 のドキュメント レベルのプロジェクトに適用されます。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。
操作ウィンドウは、Word または Excel のドキュメント レベルのカスタマイズ内でのみ作成できます。アプリケーション レベルのアドイン内に操作ウィンドウを作成することはできません。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。
[!メモ]
操作ウィンドウは、カスタム作業ウィンドウとは異なります。カスタム作業ウィンドウは、特定のドキュメントではなく、アプリケーションに関連付けられています。カスタム作業ウィンドウは、一部の Microsoft Office アプリケーション向けのアプリケーション レベルのアドインで作成できます。詳細については、「カスタム作業ウィンドウ」を参照してください。
関連のビデオ デモについては、「How Do I: Use WPF Controls Inside an Excel Actions Pane? (操作方法: Excel 操作ウィンドウ内の WPF コントロールを使用する)」を参照してください。
操作ウィンドウの表示
操作ウィンドウは、ActionsPane クラスによって表されます。ドキュメント レベルのプロジェクトを作成するとき、ThisWorkbook クラス (Excel の場合) または ThisDocument クラス (Word の場合) の ActionsPane フィールドをプロジェクトで使用することで、このクラスのインスタンスをコードで使用できます。操作ウィンドウを表示するには、ActionsPane フィールドの Controls プロパティに Windows フォーム コントロールを追加します。actions という名前のコントロールを操作ウィンドウに追加するコード例を次に示します。
Me.ActionsPane.Controls.Add(actions)
this.ActionsPane.Controls.Add(actions);
操作ウィンドウは、コントロールを明示的に追加するとすぐに実行時に表示されます。操作ウィンドウが表示された後、ユーザーの操作に応答して、コントロールを動的に追加または削除できます。通常は、ユーザーが初めてドキュメントを開くときに操作ウィンドウが表示されるように、操作ウィンドウを表示するコードを ThisDocument または ThisWorkbook の Startup イベント ハンドラーに追加します。しかし、ドキュメント内でのユーザーの操作に応答してのみ、操作ウィンドウを表示することもできます。たとえば、ドキュメントのコントロールの Click イベントにコードを追加できます。
操作ウィンドウへの複数のコントロールの追加
操作ウィンドウに複数のコントロールを追加する場合、通常は、対象のコントロールを 1 つのユーザー コントロールにグループ化し、このユーザー コントロールを Controls プロパティに追加します。このプロセスは、次の手順で実行します。
操作ウィンドウ コントロール アイテムまたはユーザー コントロール アイテムをプロジェクトに追加して、操作ウィンドウのユーザー インターフェイス (UI: User Interface) を作成します。これらのアイテムのどちらにも、カスタム Windows フォーム UserControl クラスが含まれています。操作ウィンドウ コントロール アイテムとユーザー コントロール アイテムは、名前が違うのみで、機能は実質的に同じです。
デザイナーを使用するか、またはコードを記述して、Windows フォーム コントロールを UserControl に追加します。
[!メモ]
また、WPF System.Windows.Controls.UserControl を Windows フォーム UserControl に追加することで、WPF コントロールを操作ウィンドウに追加できます。詳細については、「Office ソリューションでの WPF コントロールの使用」を参照してください。
カスタム ユーザー コントロールのインスタンスを、プロジェクトの ThisWorkbook クラス (Excel の場合) または ThisDocument クラス (Word の場合) の ActionsPane フィールドに含まれるコントロールに追加します。
このプロセスの詳細を示す例については、方法: Word 文書または Excel ブックに操作ウィンドウを追加するを参照してください。
操作ウィンドウの非表示
ActionsPane クラスには Hide メソッドと Visible プロパティがありますが、ActionsPane クラス自体のメンバーを使用して、ユーザー インターフェイスから操作ウィンドウを削除することはできません。Hide メソッドを呼び出すか、Visible プロパティを false に設定すると、操作ウィンドウのコントロールだけが非表示になり、作業ウィンドウは非表示になりません。
ソリューションの作業ウィンドウを非表示にするには、いくつかの方法があります。
Word の場合、[ドキュメント アクション] 作業ウィンドウを表す TaskPane オブジェクトの Visible プロパティを false に設定します。次のコード例は、プロジェクトの ThisDocument クラスから実行することを前提としています。
Me.Application.TaskPanes(Word.WdTaskPanes.wdTaskPaneDocumentActions).Visible = False
this.Application.TaskPanes[Word.WdTaskPanes.wdTaskPaneDocumentActions].Visible = false;
Excel の場合、Application オブジェクトの DisplayDocumentActionTaskPane プロパティを false に設定します。次のコード例は、プロジェクトの ThisWorkbook クラスから実行することを前提としています。
Me.Application.DisplayDocumentActionTaskPane = False
this.Application.DisplayDocumentActionTaskPane = false;
Word と Excel の両方において、作業ウィンドウを表すコマンド バーの CommandBar.Visible プロパティを false に設定する方法も使用できます。次のコード例は、プロジェクトの ThisDocument クラスまたは ThisWorkbook クラスから実行することを前提としています。
Me.Application.CommandBars("Task Pane").Visible = False
this.Application.CommandBars["Task Pane"].Visible = false;
文書が開かれたときに操作ウィンドウを消去する
操作ウィンドウが表示されている間にドキュメントを保存すると、操作ウィンドウにコントロールが含まれているかどうかに関係なく、ドキュメントを開くたびに操作ウィンドウが表示されます。いつ操作ウィンドウを表示するかを制御するには、ThisDocument または ThisWorkbook の Startup イベント ハンドラーで ActionsPane フィールドの Clear メソッドを呼び出し、ドキュメントを開いたときに操作ウィンドウが表示されないようにします。
いつ操作ウィンドウが閉じられたかの判定
操作ウィンドウが閉じられたときに発生するイベントはありません。ActionsPane クラスには VisibleChanged イベントがありますが、このイベントは、エンド ユーザーによって操作ウィンドウが閉じられたときに発生しません。このイベントは、Hide メソッドを呼び出すか、または Visible プロパティを false に設定することで操作ウィンドウ上のコントロールが非表示になったときに発生します。
操作ウィンドウを閉じた場合、エンド ユーザーは、アプリケーションのユーザー インターフェイスで次のいずれかの手順を実行することで、操作ウィンドウを再び表示できます。
Word または Excel の UI を使用して操作ウィンドウを表示するには
リボンの [表示] タブをクリックします。
[表示/非表示] グループで、[ドキュメント アクション] をクリックします。
操作ウィンドウ イベントのプログラミング
操作ウィンドウに複数のユーザー コントロールを追加し、ユーザー コントロールを表示したり非表示にしたりすることによって、ドキュメント上のイベントに応答するコードを作成できます。XML スキーマ要素をドキュメントにマップすると、XML 要素の 1 つにカーソルが置かれた場合は常に、操作ウィンドウに特定のユーザー コントロールを表示できます。詳細については、「方法 : Visual Studio 内で Word 文書にスキーマを割り当てる」および「方法 : Visual Studio 内でワークシートにスキーマを割り当てる」を参照してください。
ホスト コントロール、アプリケーション、またはドキュメント イベントなど、任意のオブジェクトのイベントに応答するコードを作成することもできます。詳細については、「チュートリアル : NamedRange コントロールのイベントのプログラミング」を参照してください。
操作ウィンドウ上のコントロールへのデータのバインド
操作ウィンドウのコントロールは、Windows フォームのコントロールと同じデータ バインディング機能を備えています。データセット、型指定されたデータセット、XML などに、コントロールをバインドできます。詳細については、「データ連結と Windows フォーム」を参照してください。
操作ウィンドウのコントロールとドキュメントのコントロールは、同じデータセットにバインドできます。たとえば、操作ウィンドウのコントロールとワークシートのコントロール間のマスター/詳細リレーションシップを作成できます。詳細については、「チュートリアル : Excel のアクション ペインのコントロールへのデータ連結」を参照してください。
操作ウィンドウ コントロール内のデータの検証
操作ウィンドウ上のコントロールの Validating イベント ハンドラーでメッセージ ボックスを表示する場合、フォーカスをコントロールからメッセージ ボックスに移動すると、2 度目にイベントが発生することがあります。この問題を回避するには、ErrorProvider コントロールを使用し、検証エラー メッセージを表示します。
ユーザー コントロールのスタック順
複数のユーザー コントロールを使用している場合は、垂直方向または水平方向のドッキングにかかわらず、操作ウィンドウにユーザー コントロールを正しくスタックするコードを作成できます。操作ウィンドウ上のユーザー コントロールを重ねる順序は、StackOrder プロパティの StackStyle 列挙体を使用して設定できます。詳細については、「方法 : アクション ペイン上のコントロールのレイアウトを管理する」を参照してください。
StackOrder プロパティは、次の StackStyle 列挙値を使用できます。
スタック スタイル |
定義 |
---|---|
FromBottom |
操作ウィンドウの下からスタックします。 |
FromLeft |
操作ウィンドウの左からスタックします。 |
FromRight |
操作ウィンドウの右からスタックします。 |
FromTop |
操作ウィンドウの上からスタックします。 |
None |
スタック順は定義されません。順序は開発者が制御します。 |
次のコードでは、操作ウィンドウの上からユーザー コントロールをスタックするように StackOrder プロパティを設定します。
Me.ActionsPane.StackOrder = Microsoft.Office.Tools.StackStyle.FromTop
this.ActionsPane.StackOrder = Microsoft.Office.Tools.StackStyle.FromTop;
コントロールの固定
ユーザーが実行時に操作ウィンドウのサイズを変更する場合に、操作ウィンドウと共にコントロールのサイズを変更できます。Windows フォーム コントロールの Anchor プロパティを使用すると、コントロールを操作ウィンドウに固定できます。同じように、Windows フォーム コントロールをユーザー コントロールに固定することもできます。詳細については、「方法 : Windows フォームにコントロールを固定する」を参照してください。
操作ウィンドウのサイズ変更
ActionsPane は作業ウィンドウに埋め込まれているため、ActionsPane のサイズを直接変更することはできません。しかし、作業ウィンドウを表す CommandBar の Width プロパティを設定すると、プログラムによって作業ウィンドウの幅を変更できます。作業ウィンドウの高さは、作業ウィンドウが水平にドッキングされている場合、または浮動している場合に変更できます。
通常、プログラムによる作業ウィンドウのサイズ変更はお勧めしません。ユーザーが、必要に応じて、作業ウィンドウのサイズを選択できるようにする必要があるためです。ただし、作業ウィンドウの幅を変更する必要がある場合には、次のコードを使用してこのタスクを実現できます。
Me.CommandBars("Task Pane").Width = 200
this.CommandBars["Task Pane"].Width = 200;
操作ウィンドウの移動
ActionsPane は作業ウィンドウに埋め込まれているため、その位置を直接変更することはできません。しかし、作業ウィンドウを表す CommandBar の Position プロパティを設定すると、プログラムによって作業ウィンドウを移動できます。
通常、プログラムによる作業ウィンドウの移動はお勧めしません。ユーザーが、必要に応じて、画面上の作業ウィンドウの位置を選択できるようにする必要があるためです。ただし、作業ウィンドウを特定の位置に移動する必要がある場合は、次のコードを使用してこのタスクを実現できます。
Me.CommandBars("Task Pane").Position = _
Microsoft.Office.Core.MsoBarPosition.msoBarLeft
this.CommandBars["Task Pane"].Position =
Microsoft.Office.Core.MsoBarPosition.msoBarLeft;
[!メモ]
エンド ユーザーは、作業ウィンドウの位置を手動でいつでも変更できます。プログラムで指定した位置に作業ウィンドウをドッキングしておくことはできません。ただし、向きの変更を確認し、操作ウィンドウ上のコントロールが正しい方向でスタックされるようにすることは可能です。詳細については、「方法 : アクション ペイン上のコントロールのレイアウトを管理する」を参照してください。
ActionsPane の Top プロパティおよび Left プロパティを設定しても、その位置は変更されません。これは、ActionsPane オブジェクトが作業ウィンドウに埋め込まれているためです。
作業ウィンドウがドッキングされていない場合、作業ウィンドウを表す CommandBar の Top プロパティおよび Left プロパティを設定できます。次のコードでは、ドッキングが解除された作業ウィンドウをドキュメントの左上隅に移動します。
If Me.CommandBars("Task Pane").Position = _
Microsoft.Office.Core.MsoBarPosition.msoBarFloating Then
Me.CommandBars("Task Pane").Top = 0
Me.CommandBars("Task Pane").Left = 0
End If
if (this.CommandBars["Task Pane"].Position ==
Microsoft.Office.Core.MsoBarPosition.msoBarFloating)
{
this.CommandBars["Task Pane"].Top = 0;
this.CommandBars["Task Pane"].Left = 0;
}
参照
処理手順
方法: Word 文書または Excel ブックに操作ウィンドウを追加する
チュートリアル : 操作ウィンドウから文書へのテキストの挿入
チュートリアル : Word の操作ウィンドウ上のコントロールへのデータ バインディング
チュートリアル : Excel のアクション ペインのコントロールへのデータ連結
方法 : アクション ペイン上のコントロールのレイアウトを管理する
チュートリアル : 操作ウィンドウから文書へのテキストの挿入
概念
Office ソリューションでの WPF コントロールの使用
Office プロジェクト内のオブジェクトへのグローバル アクセス