私はExcel AddInを書いています。ワークブックのプロパティに応じて一部のコントロールが有効/無効になるリボンを使用します。
そのためには、アクティブなワークブックが変更されるたびに、リボン コントロールの状態を更新する必要があると思います。
Chip Pearson のサイトでは、 VBAでそれを行う方法が説明されています。ここでは、アクティブな Excel ワークブックを取得する方法について説明していますが、C# AddInでこのイベントをトリガーすることはできません。
次のコードをThisAddIn
クラスに追加すると、必要に応じてイベントが発生するようです。
void Application_ActiveWorkbookChanges(Excel.Workbook Wb)
{
// TODO: Active Workbook has changed. Ribbon should be updated.
}
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
this.Application.WorkbookActivate +=
new Excel.AppEvents_WorkbookActivateEventHandler
(Application_ActiveWorkbookChanges);
this.Application.WorkbookDeactivate +=
new Excel.AppEvents_WorkbookDeactivateEventHandler
(Application_ActiveWorkbookChanges);
}