カスタム作業ウィンドウ
作業ウィンドウとは、Microsoft Office アプリケーション ウィンドウのいずれかの端に通常ドッキングされているユーザー インターフェイス パネルです。カスタム作業ウィンドウを使用すると、独自の作業ウィンドウを作成して、ユーザーが使い慣れたインターフェイスを使用してソリューションの機能にアクセスできるようにすることができます。たとえば、コードを実行してドキュメントを変更したり、データ ソースのデータを表示したりするコントロールをインターフェイスに含めることができます。
対象: このトピックの情報は、Outlook 2013 と Outlook 2010 のアプリケーション レベルのプロジェクトに適用されます。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。
[!メモ]
カスタム作業ウィンドウは操作ウィンドウとは異なります。操作ウィンドウは、Microsoft Office Word と Microsoft Office Excel のドキュメント レベルのカスタマイズに含まれます。詳細については、「操作ウィンドウの概要」を参照してください。
カスタム作業ウィンドウの利点
カスタム作業ウィンドウを使用すると、独自の機能を使い慣れたユーザー インターフェイスに統合できます。カスタム作業ウィンドウは Visual Studio のツールを使用して簡単に作成できます。
使い慣れたユーザー インターフェイス
Microsoft Office system のアプリケーションのユーザーは、既に Word の [スタイルと書式] などの作業ウィンドウを使い慣れています。カスタム作業ウィンドウは、Microsoft Office system の他の作業ウィンドウと同様に動作します。ユーザーは、カスタム作業ウィンドウをアプリケーション ウィンドウの別の端にドッキングしたり、ウィンドウ上の任意の場所にドラッグしたりできます。複数のカスタム作業ウィンドウを同時に表示するアドインを作成すると、ユーザーはそれぞれの作業ウィンドウを個別に制御できます。
Windows フォームのサポート
Visual Studio の Office 開発ツールを使用して作成するカスタム作業ウィンドウのユーザー インターフェイスは、Windows フォーム コントロールに基づいています。使い慣れた Windows フォーム デザイナーを使用して、カスタム作業ウィンドウのユーザー インターフェイスをデザインできます。また、Windows フォームのデータ連結サポートを使用して、データ ソースを作業ウィンドウのコントロールに連結することもできます。
カスタム作業ウィンドウの作成
基本的なカスタム作業ウィンドウは次の 2 つの手順で作成できます。
Windows フォーム コントロールを UserControl オブジェクトに追加して、カスタム作業ウィンドウのユーザー インターフェイスを作成します。
ユーザー コントロールをアドインの CustomTaskPaneCollection オブジェクトに渡して、カスタム作業ウィンドウをインスタンス化します。このコレクションから返される新しい CustomTaskPane オブジェクトを使用して、作業ウィンドウの外観を変更したり、ユーザー イベントに応答したりできます。
詳細については、「方法 : カスタム作業ウィンドウをアプリケーションに追加する」を参照してください。
ユーザー インターフェイスの作成
Visual Studio の Office 開発ツールを使用して作成したカスタム作業ウィンドウには、常に UserControl オブジェクトが含まれています。このユーザー コントロールがカスタム作業ウィンドウのユーザー インターフェイスを提供します。ユーザー コントロールはデザイン時または実行時に作成できます。ユーザー コントロールをデザイン時に作成する場合は、Windows フォーム デザイナーを使用して作業ウィンドウのユーザー インターフェイスを構成します。
カスタム作業ウィンドウのインスタンス化
カスタム作業ウィンドウのユーザー インターフェイスを含むユーザー コントロールを作成した後、CustomTaskPane をインスタンス化する必要があります。それには、Add メソッドを 1 つ呼び出して、アドインの CustomTaskPaneCollection にユーザー コントロールを渡します。このコレクションは ThisAddIn クラスの CustomTaskPanes フィールドとして公開されます。次のコード例は、ThisAddIn クラスから実行することを前提としています。
myUserControl1 = New MyUserControl
myCustomTaskPane = Me.CustomTaskPanes.Add(myUserControl1, "My Task Pane")
myCustomTaskPane.Visible = True
myUserControl1 = new MyUserControl();
myCustomTaskPane = this.CustomTaskPanes.Add(myUserControl1, "My Task Pane");
myCustomTaskPane.Visible = true;
Add メソッドは新しい CustomTaskPane オブジェクトを返します。このオブジェクトを使用して、作業ウィンドウの外観を変更したり、ユーザー イベントに応答したりできます。
複数のウィンドウでの作業ウィンドウの制御
カスタム作業ウィンドウはドキュメント フレーム ウィンドウに関連付けられます。ドキュメント フレーム ウィンドウは、ユーザーに対してドキュメントや項目を表示するウィンドウです。作業ウィンドウが表示されるのは、関連付けられたウィンドウが表示される場合だけです。
どのウィンドウにカスタム作業ウィンドウが表示されるかを指定するには、作業ウィンドウを作成するときに次の Add メソッド オーバーロードを使用します。
作業ウィンドウをアクティブ ウィンドウに関連付けるには、CustomTaskPaneCollection.Add(UserControl, String) メソッドを使用します。
作業ウィンドウを特定のウィンドウでホストされているドキュメントに関連付けるには、CustomTaskPaneCollection.Add(UserControl, String, Object) メソッドを使用します。
一部の Office アプリケーションには、複数のウィンドウが開いているときに、どの時点で作業ウィンドウを作成または表示するかを示す明示的な命令が必要です。したがって、作業ウィンドウがアプリケーション内の適切なドキュメントまたは項目で表示されるように、コード内のどの位置でカスタム作業ウィンドウをインスタンス化するかを検討する必要があります。詳細については、アプリケーション ウィンドウの管理のカスタム作業ウィンドウを参照してください。
作業ウィンドウからのアプリケーションへのアクセス
アプリケーションをユーザー コントロールから自動化する場合は、コード内の Globals.ThisAddIn.Application を使用してオブジェクト モデルに直接アクセスできます。静的な Globals クラスが ThisAddIn オブジェクトへのアクセスを可能にします。このオブジェクトの Application フィールドがアプリケーションのオブジェクト モデルへのエントリ ポイントとなります。
ThisAddIn オブジェクトの Application フィールドの詳細については、「アプリケーション レベルのアドインのプログラミング」を参照してください。カスタム作業ウィンドウからアプリケーションを自動化する方法を示すチュートリアルについては、「チュートリアル : カスタム作業ウィンドウからのアプリケーションの自動化」を参照してください。Globals クラスの詳細については、「Office プロジェクト内のオブジェクトへのグローバル アクセス」を参照してください。
カスタム作業ウィンドウのユーザー インターフェイスの管理
作業ウィンドウを作成した後で、CustomTaskPane オブジェクトのプロパティとイベントを使用して、作業ウィンドウのユーザー インターフェイスを制御し、ユーザーが作業ウィンドウを変更したときに応答することができます。
カスタム作業ウィンドウの表示
作業ウィンドウは既定で非表示になっています。作業ウィンドウを表示するには、Visible プロパティを true に設定する必要があります。
ユーザーは、作業ウィンドウの隅にある [閉じる] ボタン (X) をクリックすることにより、いつでも作業ウィンドウを閉じることができます。ただし、ユーザーが閉じたカスタム作業ウィンドウを再び表示するための既定の方法はありません。表示する方法を用意しておかないと、カスタム作業ウィンドウを閉じた後に再び表示することができません。
アドインでカスタム作業ウィンドウを作成する場合は、ボタンなどの UI 要素も作成して、ユーザーがクリックすればカスタム作業ウィンドウの表示と非表示を切り替えることができるようにする必要があります。リボンのカスタマイズをサポートしている Microsoft Office アプリケーションにカスタム作業ウィンドウを作成する場合は、カスタム作業ウィンドウを表示または非表示にするボタンを含むコントロール グループをリボンに追加できます。その方法を示すチュートリアルについては、「チュートリアル : カスタム作業ウィンドウとリボン ボタンの同期」を参照してください。
リボンのカスタマイズをサポートしていない Microsoft Office アプリケーションにカスタム作業ウィンドウを作成する場合は、カスタム作業ウィンドウを表示または非表示にする CommandBarButton を追加します。
作業ウィンドウの外観の変更
CustomTaskPane オブジェクトのプロパティを使用して、カスタム作業ウィンドウのサイズや場所を制御できます。カスタム作業ウィンドウに含まれている UserControl オブジェクトのプロパティを使用して、カスタム作業ウィンドウの外観にさまざまな変更を加えることができます。たとえば、ユーザー コントロールの BackgroundImage プロパティを使用すると、カスタム作業ウィンドウの背景イメージを指定できます。
次の表に、CustomTaskPane プロパティを使用してカスタム作業ウィンドウに加えることのできる変更の内容を示します。
タスク |
プロパティ |
---|---|
作業ウィンドウのサイズを変更する |
|
作業ウィンドウの場所を変更するには |
|
作業ウィンドウを表示または非表示にする |
|
作業ウィンドウの場所をユーザーが変更できないようにする |
カスタム作業ウィンドウのイベントのプログラミング
ユーザーがカスタム作業ウィンドウを変更したときにアドインが応答するようにすることもできます。たとえば、ユーザーがウィンドウの向きを横から縦に変更した場合に、コントロールを再配置できます。
次の表に、ユーザーがカスタム作業ウィンドウに加えた変更に応答するように処理できるイベントを示します。
タスク |
イベント |
---|---|
ユーザーが作業ウィンドウの場所を変更したときに応答する。 |
|
ユーザーが作業ウィンドウを表示または非表示にしたときに応答する。 |
作業ウィンドウが使用したリソースのクリーンアップ
カスタム作業ウィンドウを作成した場合、CustomTaskPane オブジェクトはアドインが実行されている限りメモリに残っています。このオブジェクトは、ユーザーが作業ウィンドウの隅にある [閉じる] ボタン (X) をクリックしてもメモリからアンロードされません。
アドインがまだ実行中の状態で、作業ウィンドウが使用していたリソースをクリーンアップするには、Remove メソッドまたは RemoveAt メソッドを使用します。このメソッドは、指定された CustomTaskPane オブジェクトを CustomTaskPanes コレクションから削除し、このオブジェクトの Dispose メソッドを呼び出します。
アドインがアンロードされると、Visual Studio Tools for Office Runtime はカスタム作業ウィンドウが使用していたリソースを自動的にクリーンアップします。プロジェクトの ThisAddIn_Shutdown イベント ハンドラーで Remove メソッドまたは RemoveAt メソッドを呼び出さないでください。ThisAddIn_Shutdown が呼び出される前に、CustomTaskPane オブジェクトが使用していたリソースが Visual Studio Tools for Office Runtime によってクリーンアップされるため、これらのメソッドは ObjectDisposedException をスローします。ThisAddIn_Shutdown の詳細については、「Office プロジェクトのイベント」を参照してください。
複数のアプリケーション ウィンドウの管理のカスタム作業ウィンドウ
ドキュメントやその他の項目を表示するために複数のウィンドウを使用するアプリケーションでカスタム作業ウィンドウを作成するときは、ユーザーが求めるときに作業ウィンドウが表示されるように、追加の手順を実行する必要があります。
すべてのアプリケーションにおいて、カスタム作業ウィンドウはドキュメント フレーム ウィンドウに関連付けられます。ドキュメント フレーム ウィンドウは、ユーザーに対してドキュメントや項目を表示するウィンドウです。作業ウィンドウが表示されるのは、関連付けられたウィンドウが表示される場合だけです。ただし、すべてのアプリケーションがドキュメント フレーム ウィンドウを同じように使用するわけではありません。
次に挙げるアプリケーション グループは、それぞれ異なる開発要件を前提とします。
Outlook
Word、InfoPath、およびPowerPoint
関連のビデオ デモについては、「How Do I: Manage Task Panes in Word Add-ins? (操作方法: Word のアドインで作業ウィンドウを管理する)」を参照してください。
Outlook
Outlook にカスタム作業ウィンドウを作成すると、カスタム作業ウィンドウは特定のエクスプローラー ウィンドウまたはインスペクター ウィンドウに関連付けられます。エクスプローラーは、フォルダーの内容を表示するウィンドウです。インスペクターは、電子メール メッセージやタスクなどの項目を表示するウィンドウです。
複数のエクスプローラー ウィンドウまたはインスペクター ウィンドウにカスタム作業ウィンドウを表示する場合は、エクスプローラー ウィンドウまたはインスペクター ウィンドウを開くときにカスタム作業ウィンドウの新しいインスタンスを作成する必要があります。この操作を行うには、エクスプローラー ウィンドウまたはインスペクター ウィンドウが作成されるときに発生するイベントを処理し、イベント ハンドラーで作業ウィンドウを作成します。エクスプローラー イベントとインスペクター イベントを処理し、表示するウィンドウに応じて、作業ウィンドウの表示/非表示を切り替えることもできます。
作業ウィンドウを特定のエクスプローラー ウィンドウまたはインスペクター ウィンドウに関連付けるには、CustomTaskPaneCollection.Add(UserControl, String, Object) メソッドを使用して作業ウィンドウを作成するか、Explorer オブジェクトまたは Inspector オブジェクトを window パラメーターに渡します。カスタム作業ウィンドウの作成の詳細については、「カスタム作業ウィンドウ」を参照してください。
開かれている電子メール メッセージごとに作業ウィンドウを作成する方法を示すチュートリアルについては、「チュートリアル : Outlook で電子メール メッセージと共にカスタム作業ウィンドウを表示する」を参照してください。
Outlook イベント
エクスプローラー ウィンドウの状態を監視するには、次のエクスプローラー関連のイベントを処理します。
インスペクター ウィンドウの状態を監視するには、次のインスペクター関連のイベントを処理します。
Outlook における複数インスタンスのカスタム作業ウィンドウの回避
Outlook のウィンドウに複数インスタンスのカスタム作業ウィンドウが表示されないようにするには、ウィンドウが閉じるたびに ThisAddIn クラスの CustomTaskPanes コレクションをカスタム作業ウィンドウから明示的に削除します。ウィンドウが閉じるときに発生する ExplorerEvents_10_Event.Close や InspectorEvents_10_Event.Close などのイベントで、Remove メソッドを呼び出します。
カスタム作業ウィンドウを明示的に削除しない場合は、Outlook のウィンドウに複数インスタンスのカスタム作業ウィンドウが表示される可能性があります。Outlook ではウィンドウが再利用されることがあり、再利用されたウィンドウでは、関連付けられていたカスタム作業ウィンドウへの参照が保持されます。
Word、InfoPath、およびPowerPoint
Word、InfoPath、およびPowerPointは、個別のドキュメント フレーム ウィンドウの各ドキュメント。これらのアプリケーション用にカスタム作業ウィンドウを作成すると、カスタム作業ウィンドウは特定の文書 (ドキュメント) にのみ関連付けられます。ユーザーが別の文書 (ドキュメント) を開くと、今まで表示されていた文書 (ドキュメント) が再び表示されるまで、カスタム作業ウィンドウは非表示になります。
複数のドキュメントがある場合に 1 つのカスタム作業ウィンドウを表示するには、ユーザーがドキュメントを新規作成するか、既存のドキュメントを開くときに、カスタム作業ウィンドウの新しいインスタンスを作成します。この操作を行うには、ドキュメントが作成されるか開かれるときに発生するイベントを処理し、イベント ハンドラーで作業ウィンドウを作成します。ドキュメント イベントを処理し、表示するドキュメント (文書) に応じて、作業ウィンドウの表示/非表示を切り替えることもできます。
作業ウィンドウを特定のドキュメント ウィンドウに関連付け、作業ウィンドウの作成に CustomTaskPaneCollection.Add(UserControl, String, Object) のメソッドを使用し Microsoft.Office.Interop.Word.Window (Wordの場合)、Microsoft.Office.Interop.InfoPath.WindowObject (InfoPathの場合) または Microsoft.Office.Interop.PowerPoint.DocumentWindow (PowerPointの場合) window のパラメーターに渡します。
Word イベント
Word の文書ウィンドウの状態を監視するには、次のイベントを処理します。
InfoPath イベント
InfoPath のドキュメント ウィンドウの状態を監視するには、次のイベントを処理します。
PowerPoint イベント
PowerPointのドキュメント ウィンドウの状態を監視するには、次のイベントを処理する場合:
参照
処理手順
方法 : カスタム作業ウィンドウをアプリケーションに追加する
チュートリアル : カスタム作業ウィンドウからのアプリケーションの自動化