所以我想在我们的文档级别excel vsto addin中捕获一些关键命令。除了使用vba和让我们的加载项与vba对话之外,我似乎找不到其他方法来实现这一点。任何帮助/例子都将不胜感激。
我正在使用Excel2007。
您只能通过API调用来对Excel进行子类化,并监视键命令来实现这一点。 This 年龄较大,但仍适用。
一种方法涉及使用第三方解决方案 阿丁快车 . 他们的产品包括将键盘快捷方式作为属性添加到功能区菜单命令的功能。
另一种方法是通过一些 Win32 API 通常被称为 窗口子类化 .下面是一个关于如何做的代码示例的很好的解释。请注意,要使这个代码在vsto中“工作”,唯一需要做的“额外”事情是移动 SetHook() 方法到 Startup 事件,以及shutdown事件的unhookWindowsHookEx()方法。
SetHook()
Startup
Check out the article on MSDN here by Stephen Toub.
最后还有使用 OnAction 外接程序类的属性。此方法需要使用一些VBA( 对于指向基础.NET加载项的回调方法 ,并且只要您愿意在解决方案中分发一些VBA,就可以正常工作。( 例如,XLS或Doc w/vba项目,或者可能是本地加载项 )注意,您还需要标记 comvisible = true 然后暴露 GetAutomationServiceObject 方法,以便您的VBA可以从VBA代码引用外接程序。
OnAction
comvisible = true
GetAutomationServiceObject
see here for a thread on it...