次の方法で共有


複数のアプリケーション ウィンドウでカスタム作業ウィンドウを管理する

更新 : 2010 年 5 月

ドキュメントやその他の項目を表示するために複数のウィンドウを使用するアプリケーションでカスタム作業ウィンドウを作成するときは、ユーザーが求めるときに作業ウィンドウが表示されるように、追加の手順を実行する必要があります。

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

すべてのアプリケーションにおいて、カスタム作業ウィンドウはドキュメント フレーム ウィンドウに関連付けられます。ドキュメント フレーム ウィンドウは、ユーザーに対してドキュメントや項目を表示するウィンドウです。 作業ウィンドウが表示されるのは、関連付けられたウィンドウが表示される場合だけです。 ただし、すべてのアプリケーションがドキュメント フレーム ウィンドウを同じように使用するわけではありません。

次に挙げるアプリケーション グループは、それぞれ異なる開発要件を前提とします。

  • Outlook

  • Word、InfoPath、および PowerPoint 2010

  • Excel および PowerPoint 2007

ビデオへのリンク 関連のビデオ デモについては、「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.CloseInspectorEvents_10_Event.Close などのイベントで、Remove メソッドを呼び出します。

カスタム作業ウィンドウを明示的に削除しない場合は、Outlook のウィンドウに複数インスタンスのカスタム作業ウィンドウが表示される可能性があります。 Outlook ではウィンドウが再利用されることがあり、再利用されたウィンドウでは、関連付けられていたカスタム作業ウィンドウへの参照が保持されます。

Word、InfoPath、および PowerPoint 2010

Word、InfoPath、および PowerPoint 2010 は、個別のドキュメント フレーム ウィンドウを使用して各文書 (各ドキュメント) を表示します。 これらのアプリケーション用にカスタム作業ウィンドウを作成すると、カスタム作業ウィンドウは特定の文書 (ドキュメント) にのみ関連付けられます。 ユーザーが別の文書 (ドキュメント) を開くと、今まで表示されていた文書 (ドキュメント) が再び表示されるまで、カスタム作業ウィンドウは非表示になります。

複数のドキュメントがある場合に 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 パラメーターに渡します。

詳細については、「Managing Task Panes in Multiple Word and InfoPath Documents (複数の Word 文書および InfoPath ドキュメントでの作業ウィンドウの管理)」を参照してください。 ここでは特に Word と InfoPath について説明していますが、PowerPoint 2010 にはシングル ドキュメント インターフェイスが採用されているため、同じ考え方をこのリリースの PowerPoint にも適用できます。

Word イベント

Word の文書ウィンドウの状態を監視するには、次のイベントを処理します。

InfoPath イベント

InfoPath のドキュメント ウィンドウの状態を監視するには、次のイベントを処理します。

PowerPoint イベント

PowerPoint 2010 のドキュメント ウィンドウの状態を監視するには、次のイベントを処理します。

Excel および PowerPoint 2007

Excel および PowerPoint 2007 では、すべてのドキュメント (ブックおよびプレゼンテーション) に対して 1 つのドキュメント フレーム ウィンドウを作成します。 これらのアプリケーションで作成したカスタム作業ウィンドウは、アプリケーション内で開いているすべてのドキュメントに対して利用可能です。 追加の作業を行わなくても、各ドキュメントに対して作業ウィンドウが表示されます。

ただし、アクティブになっているドキュメントに応じて、作業ウィンドウの表示/非表示を切り替えたり、作業ウィンドウに別のユーザー インターフェイス (UI) 要素やデータを表示したりすることが必要になる場合があります。 この操作を行うには、ドキュメントが作成されるか、開かれるか、アクティブになったときに発生するイベントを処理し、イベント ハンドラーで作業ウィンドウを更新します。

Excel イベント

Excel のブックの状態を監視するには、次のイベントを処理します。

PowerPoint イベント

PowerPoint 2007 のプレゼンテーションの状態を監視するには、次のイベントを処理します。

次のコード例は、Excel アドインにおける WorkbookActivate イベントのイベント ハンドラーでカスタム作業ウィンドウの表示/非表示を行う方法を示したものです。 各ブックがアクティブになったとき、ブックの名前が SalesData.xls である場合にのみ、作業ウィンドウが表示されます。それ以外の場合は、作業ウィンドウは非表示になります。 この例を実行するには、ThisAddIn クラスの既定の ThisAddIn_Startup イベント ハンドラーを次のコードで置き換えます。 この例では、プロジェクトに UserControl1 という名前の UserControl が含まれていることを前提としています。

Dim myUserControl As UserControl1
Dim myCustomTaskPane As Microsoft.Office.Tools.CustomTaskPane

Private Sub ThisAddIn_Startup(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles Me.Startup
    myUserControl = New UserControl1()
    myCustomTaskPane = Me.CustomTaskPanes.Add(myUserControl, "Sales Task Pane")
End Sub

Private Sub Application_WorkbookActivate(ByVal Wb As Excel.Workbook) _
    Handles Application.WorkbookActivate

    If Wb.Name = "SalesData.xlsx" Then
        myCustomTaskPane.Visible = True
    Else
        myCustomTaskPane.Visible = False
    End If
End Sub
private UserControl1 myUserControl;
private Microsoft.Office.Tools.CustomTaskPane myCustomTaskPane;

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    this.Application.WorkbookActivate += new Excel.AppEvents_WorkbookActivateEventHandler(
        Application_WorkbookActivate);

    myUserControl = new UserControl1();
    myCustomTaskPane = this.CustomTaskPanes.Add(myUserControl, "Sales Task Pane");
}

void Application_WorkbookActivate(Excel.Workbook Wb)
{
    if (Wb.Name == "SalesData.xlsx")
        myCustomTaskPane.Visible = true;
    else
        myCustomTaskPane.Visible = false;
}

参照

処理手順

方法 : カスタム作業ウィンドウをアプリケーションに追加する

チュートリアル : Outlook で電子メール メッセージと共にカスタム作業ウィンドウを表示する

方法 : Outlook で電子メール メッセージと共にカスタム作業ウィンドウを表示する

チュートリアル : カスタム作業ウィンドウとリボン ボタンの同期

概念

カスタム作業ウィンドウの概要

その他の技術情報

Managing Task Panes in Multiple Word and InfoPath Documents (複数の Word 文書および InfoPath ドキュメントでの作業ウィンドウの管理)

履歴の変更

日付

履歴

理由

2010 年 5 月

PowerPoint 2010 のカスタム作業ウィンドウの管理に関する新しい詳細情報を追加しました。

情報の拡充