如何在应用程序级Excel VSTO插件中为每个工作簿分别设置Ribbon实例?

时间:2016-06-20 08:59:50

标签: vsto excel-addins ribbonx

我有一个带有xml功能区的应用程序级Excel VSTO插件。目前,在同一个excel实例中打开两个或多个工作簿时,所有工作簿都共享相同的功能区实例。

这是一个问题,因为Ribbon类中的某些变量的值对于每个工作簿应该是不同的。由于只创建了该Ribbon类的一个实例,因此当工作簿工作表上的特定操作导致变量值更改时,其他打开的工作簿的值也会更改。但是,这不应该发生。

是否有任何方法可以在每次打开新工作簿时创建新的功能区实例?

1 个答案:

答案 0 :(得分:1)

不,无法在Excel应用程序的单个实例中创建功能区的特定于文档或窗口的实例。

您的代码需要跟踪Workbook.OpenWorkbookActivate等事件,以确定何时不同的工作簿是用户正在使用的工作簿。使用功能区UI的InvalidateInvalidateControl方法触发回调,以根据需要更改功能区控件状态,以反映工作簿的设置。