操作ウィンドウの概要

操作ウィンドウは、特定の Microsoft Office Word 文書や Microsoft Office Excel ブックにアタッチされる、カスタマイズ可能なドキュメント アクション作業ウィンドウです。 操作ウィンドウは、他の組み込み作業ウィンドウ (Excel の [XML ソース] 作業ウィンドウや、Word の [スタイルと書式] 作業ウィンドウなど) と同様に、Office の作業ウィンドウ内でホストされます。 操作ウィンドウのユーザー インターフェイスは、Windows フォーム コントロールまたは WPF コントロールを使用してデザインできます。

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

操作ウィンドウは、Word または Excel のドキュメント レベルのカスタマイズ内でのみ作成できます。 VSTO アドイン内に操作ウィンドウを作成することはできません。 詳細については、「Office アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

Note

カスタム作業ウィンドウは、操作ウィンドウとは異なります。 カスタム作業ウィンドウは、特定のドキュメントではなく、アプリケーションに関連付けられます。 カスタム作業ウィンドウは、一部の Microsoft Office アプリケーション向けの VSTO アドインで作成できます。 詳細については、「カスタム作業ウィンドウ」を参照してください。

操作ウィンドウを表示する

操作ウィンドウは、ActionsPane クラスによって表されます。 ドキュメント レベルのプロジェクトを作成するとき、ThisWorkbook クラス (Excel の場合) または ThisDocument クラス (Word の場合) の ActionsPane フィールドをプロジェクトで使用することで、このクラスのインスタンスをコードで使用できます。 操作ウィンドウを表示するには、ActionsPane フィールドの Controls プロパティに Windows フォーム コントロールを追加します。 actions という名前のコントロールを操作ウィンドウに追加するコード例を次に示します。

this.ActionsPane.Controls.Add(actions);

操作ウィンドウは、コントロールを明示的に追加するとすぐに実行時に表示されます。 操作ウィンドウが表示された後は、ユーザーの操作に応じてコントロールを動的に追加または削除できます。 通常は、ユーザーが初めてドキュメントを開くときに操作ウィンドウが表示されるように、操作ウィンドウを表示するコードを ThisDocument または ThisWorkbookStartup イベント ハンドラーに追加します。 しかし、ドキュメント内でのユーザーの操作に応じてのみ操作ウィンドウを表示することもできます。 たとえば、ドキュメント上のコントロールの Click イベントにコードを追加できます。

操作ウィンドウに複数のコントロールを追加する

操作ウィンドウに複数のコントロールを追加する場合は、対象のコントロールを 1 つのユーザー コントロールにグループ化し、このユーザー コントロールを Controls プロパティに追加します。 このプロセスには、次の手順が含まれます。

  1. [操作ウィンドウ コントロール] 項目または [ユーザー コントロール] 項目をプロジェクトに追加して、操作ウィンドウのユーザー インターフェイス (UI) を作成します。 これらのアイテムのどちらにも、カスタム Windows フォーム UserControl クラスが含まれています。 [操作ウィンドウ コントロール] 項目と [ユーザー コントロール] 項目は、名前が違うのみで、機能は同じです。

  2. デザイナーを使用するか、またはコードを記述して、Windows フォーム コントロールを UserControl に追加します。

    Note

    また、WPF の UserControl を Windows フォーム UserControl に追加することにより、WPF コントロールを操作ウィンドウに追加することもできます。 詳しくは、「Office ソリューションで WPF コントロールを使用する」をご覧ください。

  3. カスタム ユーザー コントロールのインスタンスを、プロジェクトの ThisWorkbook クラス (Excel の場合) または ThisDocument クラス (Word の場合) の ActionsPane フィールドに含まれるコントロールに追加します。

    このプロセスの詳細を示す例については、「方法: Word 文書または Excel ブックに操作ウィンドウを追加する」を参照してください。

操作ウィンドウを非表示にする

ActionsPane クラスには Hide メソッドと Visible プロパティがありますが、ActionsPane クラス自体のメンバーを使用して、ユーザー インターフェイスから操作ウィンドウを削除することはできません。 Hide メソッドを呼び出すか、Visible プロパティを false に設定すると、操作ウィンドウ上にあるコントロールだけが非表示になり、作業ウィンドウは非表示になりません。

ソリューションの作業ウィンドウを非表示にするには、いくつかの方法があります。

  • Word の場合、[ドキュメント アクション] 作業ウィンドウを表す TaskPane オブジェクトの Visible プロパティを false に設定します。 次のコード例は、プロジェクトの ThisDocument クラスから実行することを前提としています。

    this.Application.TaskPanes[Word.WdTaskPanes.wdTaskPaneDocumentActions].Visible = false;
    
  • Excel の場合、Application オブジェクトの DisplayDocumentActionTaskPane プロパティを false に設定します。 次のコード例は、プロジェクトの ThisWorkbook クラスから実行することを前提としています。

    this.Application.DisplayDocumentActionTaskPane = false;
    
  • Word と Excel の両方において、作業ウィンドウを表すコマンド バーの Visible プロパティを false に設定する方法も使用できます。 次のコード例は、プロジェクトの ThisDocument クラスまたは ThisWorkbook から実行することを前提としています。

    this.Application.CommandBars["Task Pane"].Visible = false;
    

ドキュメントが開かれた時点では操作ウィンドウを消去する

操作ウィンドウが表示されているときにユーザーがドキュメントを保存した場合、操作ウィンドウにコントロールが含まれているかどうかに関係なく、そのドキュメントを開くたびに操作ウィンドウが表示されます。 それをいつ表示するかを制御するには、ThisDocument または ThisWorkbookStartup イベント ハンドラーで ActionsPane フィールドの Clear メソッドを呼び出し、ドキュメントを開いた時点で操作ウィンドウが表示されないようにします。

いつ操作ウィンドウが閉じられたかを判定する

操作ウィンドウが閉じられたときに発生するイベントはありません。 ActionsPane クラスには VisibleChanged イベントがありますが、このイベントは、エンド ユーザーによって操作ウィンドウが閉じられたときには発生しません。 このイベントは、Hide メソッドを呼び出すか、または Visible プロパティを false に設定することで操作ウィンドウ上のコントロールが非表示になったときに発生します。

ユーザーが操作ウィンドウを閉じた場合、エンド ユーザーは、アプリケーションのユーザー インターフェイス (UI) で次のいずれかの手順を実行することにより、操作ウィンドウを再び表示できます。

Word または Excel の UI を使用して操作ウィンドウを表示するには
  1. リボンの [表示] タブをクリックします。

  2. [表示/非表示] グループで、[ドキュメント アクション] トグル ボタンをクリックします。

操作ウィンドウのイベントをプログラムする

操作ウィンドウに複数のユーザー コントロールを追加し、ドキュメント上のイベントに応答するコードを作成して、ユーザー コントロールを表示したり非表示にしたりすることができます。 XML スキーマ要素をドキュメントにマップした場合は、XML 要素の 1 つにカーソルが置かれた時点で、操作ウィンドウに特定のユーザー コントロールを表示するようにできます。 詳しくは、「方法: Visual Studio 内で Word 文書にスキーマを割り当てる」および「方法: Visual Studio 内でワークシートにスキーマを割り当てる」をご覧ください。

また、ホスト コントロール、アプリケーション、またはドキュメント イベントなど、任意のオブジェクトのイベントに応答するコードを作成することもできます。 詳しくは、「チュートリアル: NamedRange コントロールのイベントに対するプログラミング」をご覧ください。

操作ウィンドウ上のコントロールにデータをバインドする

操作ウィンドウのコントロールは、Windows フォームのコントロールと同じデータ バインディング機能を備えています。 データセット、型指定されたデータセット、XML などのデータ ソースに、コントロールをバインドできます。 詳細については、「データ連結と Windows フォーム」を参照してください。

操作ウィンドウのコントロールとドキュメントのコントロールは、同じデータセットにバインドできます。 たとえば、操作ウィンドウのコントロールとワークシートのコントロール間でマスター/詳細関係を作成できます。 詳しくは、「チュートリアル: Excel の操作ウィンドウ上のコントロールにデータをバインドする」をご覧ください。

操作ウィンドウ コントロール内のデータを検証する

操作ウィンドウ上のコントロールの Validating イベント ハンドラーでメッセージ ボックスを表示する場合、フォーカスがコントロールからメッセージ ボックスに移った時点で 2 度目のイベントが発生することがあります。 この問題を回避するには、ErrorProvider コントロールを使用して検証エラー メッセージを表示するようにします。

ユーザー コントロールの積み重ね順

複数のユーザー コントロールを使用している場合は、垂直方向または水平方向のどちらにドッキングされるかにかかわらず、操作ウィンドウにユーザー コントロールを正しく積み重ねるコードを作成できます。 操作ウィンドウにユーザー コントロールを積み重ねる順序は、StackOrder プロパティの StackStyle 列挙体を使用して設定できます。 詳しくは、「方法: 操作ウィンドウ上のコントロールのレイアウトを管理する」をご覧ください。

StackOrder プロパティでは、次の StackStyle 列挙値を使用できます。

積み重ねのスタイル 定義
FromBottom 操作ウィンドウの下から積み重ねます。
FromLeft 操作ウィンドウの左から積み重ねます。
FromRight 操作ウィンドウの右から積み重ねます。
FromTop 操作ウィンドウの上から積み重ねます。
なし 積み重ね順を定義しません。順序は開発者が制御します。

次のコードでは、操作ウィンドウの上からユーザー コントロールをスタックするように StackOrder プロパティを設定します。

this.ActionsPane.StackOrder = Microsoft.Office.Tools.StackStyle.FromTop;

コントロールを固定する

実行時にユーザーが操作ウィンドウのサイズを変更すると、操作ウィンドウでコントロールのサイズを変更できます。 Windows フォーム コントロールの Anchor プロパティを使用すると、コントロールを操作ウィンドウに固定できます。 同じように、Windows フォーム コントロールをユーザー コントロールに固定することもできます。 詳細については、「方法 : Windows フォームにコントロールを固定する」を参照してください。

操作ウィンドウのサイズを変更する

ActionsPane は作業ウィンドウに埋め込まれているため、ActionsPane のサイズを直接変更することはできません。 ただし、作業ウィンドウを表す CommandBarWidth プロパティを設定すると、プログラムによって作業ウィンドウの幅を変更できます。 作業ウィンドウの高さは、作業ウィンドウが水平にドッキングされている場合、または浮動している場合に変更できます。

作業ウィンドウのサイズをプログラムによって変更することはお勧めしません。ユーザーが必要に応じて作業ウィンドウのサイズを選択できるようにする必要があるためです。 ただし、作業ウィンドウの幅を変更する必要がある場合には、次のコードを使用してこのタスクを実現できます。

this.CommandBars["Task Pane"].Width = 200;

操作ウィンドウの位置を変更する

ActionsPane は作業ウィンドウに埋め込まれているため、その位置を直接変更することはできません。 ただし、作業ウィンドウを表す CommandBarPosition プロパティを設定すると、プログラムによって作業ウィンドウを移動できます。

作業ウィンドウの位置をプログラムによって移動することはお勧めしません。ユーザーが必要に応じて、画面上での作業ウィンドウの位置を選択できるようにする必要があるためです。 ただし、作業ウィンドウを特定の位置に移動する必要がある場合は、次のコードを使用してこのタスクを実現できます。

this.CommandBars["Task Pane"].Position =
    Microsoft.Office.Core.MsoBarPosition.msoBarLeft;

Note

エンド ユーザーは、作業ウィンドウの位置を手動でいつでも変更できます。 プログラムで指定した位置に作業ウィンドウを常にドッキングしておくことはできません。 ただし、向きの変更を確認し、操作ウィンドウ上のコントロールが正しい方向で積み重ねられるようにすることは可能です。 詳しくは、「方法: 操作ウィンドウ上のコントロールのレイアウトを管理する」をご覧ください。

ActionsPaneTop プロパティと Left プロパティを設定しても、その位置は変更されません。これは、ActionsPane オブジェクトが作業ウィンドウに埋め込まれているためです。

作業ウィンドウがドッキングされていない場合、作業ウィンドウを表す CommandBarTop プロパティと Left プロパティを設定できます。 次のコードでは、ドッキングが解除された作業ウィンドウをドキュメントの左上隅に移動します。

if (this.CommandBars["Task Pane"].Position == 
    Microsoft.Office.Core.MsoBarPosition.msoBarFloating)
{
    this.CommandBars["Task Pane"].Top = 0;
    this.CommandBars["Task Pane"].Left = 0;
}