我有一个带有xml功能区的应用程序级Excel VSTO插件。目前,在同一个excel实例中打开两个或多个工作簿时,所有工作簿都共享相同的功能区实例。
这是一个问题,因为Ribbon类中的某些变量的值对于每个工作簿应该是不同的。由于只创建了该Ribbon类的一个实例,因此当工作簿工作表上的特定操作导致变量值更改时,其他打开的工作簿的值也会更改。但是,这不应该发生。
是否有任何方法可以在每次打开新工作簿时创建新的功能区实例?
答案 0 :(得分:1)
不,无法在Excel应用程序的单个实例中创建功能区的特定于文档或窗口的实例。
您的代码需要跟踪Workbook.Open
和WorkbookActivate
等事件,以确定何时不同的工作簿是用户正在使用的工作簿。使用功能区UI的Invalidate
和InvalidateControl
方法触发回调,以根据需要更改功能区控件状态,以反映工作簿的设置。