所以我想在我们的文档级 Excel VSTO 插件中捕获一些关键命令。除了使用 VBA 并让我们的插件与 VBA 对话外,我似乎找不到其他方法。任何帮助/示例将不胜感激。
我正在使用 Excel 2007。
所以我想在我们的文档级 Excel VSTO 插件中捕获一些关键命令。除了使用 VBA 并让我们的插件与 VBA 对话外,我似乎找不到其他方法。任何帮助/示例将不胜感激。
我正在使用 Excel 2007。
一种方法是使用Addin-Express的 3rd 方解决方案。他们的产品包括将键盘快捷键作为属性添加到功能区菜单命令的功能。
另一种方法是使用低级键盘挂钩,通过一些Win32 API,通常称为windows 子类化。这是一个很好的解释,其中包含如何执行此操作的代码示例。请注意,要使此代码在 VSTO 中“工作”,您需要做的唯一“额外”事情是将SetHook()
方法移至Startup
事件,并将 UnhookWindowsHookEx() 方法移至 Shutdown 事件。
最后是OnAction
Addin 类的属性的使用。此方法需要使用一些 VBA(就指向底层 .net 插件的回调方法而言),只要您愿意在您的解决方案中分发一些 VBA(即 xls 或 doc w/ vba 项目,或者可能是本机插件)。请注意,您还需要标记comvisible = true
并公开该GetAutomationServiceObject
方法,以便您的 VBA 可以从 VBA 代码中引用您的插件。
您只能通过 API 调用 Excel 的子类并观察关键命令来做到这一点。这是旧的,但它仍然适用。