excel - 有没有一种方法可以仅使用 C# 而无需使用 VBA 来捕获 Excel VSTO 中的热键/快捷方式?

标签 excel .net-3.5 vsto excel-2007 hotkeys

所以我想在我们的文档级 Excel VSTO 插件中捕获一些键盘命令。除了使用 VBA 并让我们的插件与 VBA 对话之外,我似乎找不到其他方法来做到这一点。任何帮助/示例将不胜感激。

我使用的是 Excel 2007。

最佳答案

  1. 一种方法涉及使用 Addin-Express 中的第三方解决方案。他们的产品包括将键盘快捷键作为属性添加到功能区菜单命令的功能。

  2. 另一种方法是通过一些 Win32 API 使用低级键盘 Hook ,这通常称为Windows 子类化。这是关于如何执行此操作的代码示例的精彩解释。请注意,要使此代码在 VSTO 中“工作”,您需要做的唯一“额外”事情是将 SetHook() 方法移至 Startup 事件,并且关闭事件的 UnhookWindowsHookEx() 方法。

Check out the article on MSDN here by Stephen Toub.

  • 最后是 Addin 类的 OnAction 属性的使用。此方法需要使用一些 VBA(就指向底层 .net 插件的回调方法而言),只要您愿意在解决方案中分发一些 VBA,就可以正常工作( 即带有 vba 项目的 xls 或 doc,或者可能是 native 插件)。请注意,您还需要标记 comvisible = true,并公开 GetAutomationServiceObject 方法,以便您的 VBA 可以从 VBA 代码引用您的插件。
  • see here for a thread on it...

    关于excel - 有没有一种方法可以仅使用 C# 而无需使用 VBA 来捕获 Excel VSTO 中的热键/快捷方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2297839/

    相关文章:

    excel - 如何从 Excel 中的公式调用 VSTO 函数?

    visual-studio - VSTO 加载项 : Do I need extra code protection?

    c# - asp.net 日历控件触发验证控件

    c# - 将两个值映射到一个对象

    c# - Outlook 中 "Item Sent"上的事件

    vba - 在带有变量最后一行的vba中按升序排序

    c# - 在 asp.net 3.5 中发送 future 日期的电子邮件通知

    Excel 条件格式 - 'IF' 公式语法

    java - 使用Spring MVC将Excel导入Mysql

    c# - asp.net 中的 Excel 下载库?