VSTO で会社用の COM アドインを作成していますが、リボンから各ウィンドウの正しい作業ウィンドウを参照する際に問題が発生しています。
リボンのクリックに基づいて、タスク ペインでさまざまなコマンドを表示/非表示にするカスタム タスク ペインがあります。ドキュメント ウィンドウを 1 つ開いている場合は正常に動作しますが、複数のドキュメント ウィンドウを開いている場合、リボンは、アクティブなウィンドウではなく、最後に開いたウィンドウのカスタム作業ウィンドウを制御します。
私のコード(簡略化)は
Private Sub Agenda_Click(sender As Object, e As RibbonControlEventArgs) Handles Agenda.Click
With Globals.ThisAddIn.AddIn_TP
.Width = 300
.Visible = True
End With
With Globals.ThisAddIn.AddIn_control1
With .Panel_table
.Visible = False
.Left = 400
End With
With .Panel_SummaryBox
.Visible = True
.Left = 5
End With
End with
End Sub
アクティブなウィンドウとリンクされたタスクペインを何らかの方法で参照する必要があることはわかっていますが、これを機能させる方法がわかりません。
タスクペインのロードに関しては、プレゼンテーションが開かれる/作成されるたびに呼び出されるコードがあり、そのウィンドウのタスクペインをロードします。コードは次のとおりです。
Private Sub Application_AfterNewPresentation(Pres As PowerPoint.Presentation) Handles Application.AfterNewPresentation
AddIn_control1 = New AddIn_control
AddIn_taskpane = Me.CustomTaskPanes.Add(AddIn_control1, "Add-In Taskpane", Me.Application.ActiveWindow)
End Sub
これは正常に機能しており、タスクペインが新しいウィンドウに表示されます。ただし、前のウィンドウに戻ってリボン ボタンをクリックすると、アクティブなウィンドウではなく、新しいウィンドウの作業ウィンドウが変更されます。