有没有一种方法只使用C#和没有VBA捕捉在Excel VSTO热键/快捷方式?

问题描述 投票:7回答:2

所以,我想捕捉在我们Docuement级的Excel VSTO加载项的一些关键的命令。我似乎无法找到比使用VBA和有我们的插件谈话的VBA办法做到这一点,其他。任何帮助/例子将不胜感激。

我使用Excel 2007中。

excel .net-3.5 vsto excel-2007 hotkeys
2个回答
3
投票

你只能做到这一点通过API调用子类Excel和监视键命令。 This是年纪大了,但它仍然适用。


4
投票
  1. 一种方法包括使用从外接-Express的第三方解决方案。他们的产品包括能够添加一个快捷键的属性功能区菜单命令的能力。
  2. 另一种方法是使用低级别的键盘钩子,通过一些Win32 API中的这通常被称为窗口子类。这里是如何做到这一点的代码示例一个很好的解释。请注意,您需要做的唯一的“额外”的东西来得到这个代码在VSTO“工作”是移动SetHook()方法将Startup事件和UnhookWindowsHookEx()方法来关机事件。 Check out the article on MSDN here by Stephen Toub.
  3. 最后是使用外接程序类的OnAction财产。此方法需要使用一些VBA的(在指向回底层.NET插件的回调方法而言),而且只要你愿意在你的解决方案分发一些VBA(工程确定即XLS或DOC W / VBA项目,或者本地插件)。注意:您还需要标记comvisible = true,并露出GetAutomationServiceObject方法,使您的VBA可以从VBA代码引用您的插件。 see here for a thread on it...
© www.soinside.com 2019 - 2024. All rights reserved.