我想在我们的基于文档级别的Excel VSTO插件中捕获一些关键命令。除了使用VBA并让我们的插件与VBA交互之外,似乎找不到其他方法。任何帮助或示例都将不胜感激。
我正在使用Excel 2007。
我想在我们的基于文档级别的Excel VSTO插件中捕获一些关键命令。除了使用VBA并让我们的插件与VBA交互之外,似乎找不到其他方法。任何帮助或示例都将不胜感激。
我正在使用Excel 2007。
一种方法是使用Addin-Express提供的第三方解决方案。他们的产品包括将键盘快捷键添加为选项卡菜单命令属性的功能。
另一种方法是利用一些Win32 API,通常称为窗口子类化,通过低级键盘挂钩来实现。这里有一个优秀的解释,并附有代码示例。注意,唯一需要在VSTO中使这段代码“工作”的“额外”事情是将SetHook()
方法移动到Startup
事件,将UnhookWindowsHookEx()方法移动到Shutdown事件。
OnAction
属性。该方法需要使用一些VBA(指指向基础.net addin的回调方法),只要您愿意在解决方案中分发一些VBA(即具有带有VBA项目的xls或doc,或者可能是本机插件),它就可以正常工作。请注意,您还需要将comvisible=true
标记,并公开GetAutomationServiceObject
方法,以便您的VBA可以从VBA代码中引用您的插件。