2010-02-19 22 views
7

所以我想在我們的Docuement級Excel VSTO插件中捕獲一些關鍵命令。我似乎無法找到一種方法去做,除了使用VBA並讓我們的插件與VBA交談。任何幫助/例子將不勝感激。有沒有辦法在Excel VSTO中僅使用C#和無VBA捕獲HotKeys/Shortcuts?

我使用Excel 2007中

+0

Visual Studio的Office開發(VSOD)支持團隊已經撰寫了有關這方面的文章:http://blogs.msdn.com/b/vsod/archive/2010 /04/08/using-shortcut-keys-to-call-a-function-in-an-office-add-in.aspx – 2013-03-05 16:31:51

回答

3

您只能通過API實現調用子類Excel和監視鍵命令。 This較舊,但仍適用。

+0

鏈接已中斷 – 2016-07-19 20:22:11

4
  1. 一種方法包括使用從外接快車第三方解決方案。他們的產品包括將鍵盤快捷鍵作爲屬性添加到功能區菜單命令的功能。

  2. 另一種方法是使用低級別的鍵盤鉤子,通過一些的Win32 API的這通常被稱爲窗口繼承。以下是有關如何執行代碼示例的極好解釋。請注意,爲了使此代碼在VSTO中「工作」,唯一需要做的「額外」事情是將SetHook()方法移至Startup事件,並將UnhookWindowsHookEx()方法移至Shutdown事件。

    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...

    Comparison of the techniques given by Geoff Darst

+0

看起來像Geoff Darst鏈接現在更長時間了。任何想法現在在哪裏找到那篇文章?謝謝! – 2013-03-05 16:29:37

+0

@ MichaelZlatkovsky-Microsoft從narkive中查看此鏈接:http://microsoft.public.vsnet.vstools.office.narkive.com/a5kXwA4E/capture-keystrokes-ctrl-something – Mark 2017-10-19 07:28:57

相關問題