如何使用应用程序级加载项对单个Excel实例的Ribbon元素进行更改?
我正在使用VSTO和VB.NET for Excel 2013.我正在开发一个应用程序级外接程序,但是我不能让两个不同的工作簿存储不同的“function区状态”。 例如,当我想启用一个button时,我使用下面的代码:
Globals.Ribbons.Ribbon1.myButton.Enable = False
这使得在每个打开的工作簿上禁用元素“myButton”,但是我只想为其禁用一个工作簿。
我现在的做法是处理事件WorkbookActivate,以更改function区状态。 问题是:这样,用户在其他不在顶部的工作簿中看到无效状态。
有一些更好的解决方法? 没有办法pipe理function区实例(而不仅仅是像我这样做的全局元素)?
谢谢
有一些更好的解决方法? 没有办法pipe理function区实例(而不仅仅是像我这样做的全局元素)?
您需要使用callback。 尝试使用getEnabledcallback来代替。
此外,在需要时,您可以使用IRibbonUI界面方法强制Office应用程序更新UI控件。 Invalidate方法使Ribbon用户界面的所有控件的caching值无效。 请参阅IRibbonUI对象的概述 。
您可以在MSDN的以下系列文章中阅读有关Ribbon UI(又名Fluent UI)的更多信息:
- 为开发人员定制2007 Office Fluentfunction区(第1部分,共3部分)
- 为开发人员定制2007 Office Fluentfunction区(2/3)
- 为开发人员定制2007 Office Fluentfunction区(3部分)