Таким образом, я хочу получить некоторые ключевые команды на нашем Docuement-уровне дополнение Excel VSTO. Я, может казаться, не нахожу, что способ сделать это, кроме использовать VBA и иметь наше дополнение говорит с VBA. Любая справка/примеры значительно ценилась бы.
Я использую Excel 2007.
Вы можете сделать это только через API вызывает подкласс Excel и следит за ключевыми командами. Это старше, но все еще применяется.
Один из методов предполагает использование стороннего решения из Addin-Express . Их продукт включает возможность добавлять сочетание клавиш в качестве свойства к командам меню ленты.
Другой способ - использовать низкоуровневые перехватчики клавиатуры через некоторые Win32 API , которые обычно называют подклассом окон . Вот отличное объяснение с образцом кода, как это сделать. Обратите внимание, что единственная «дополнительная» вещь, которую вам нужно сделать, чтобы заставить этот код «работать» в VSTO, - это переместить метод SetHook ()
в событие Startup
и UnhookWindowsHookEx ( ) к событию Shutdown.
Наконец, используется свойство OnAction
класса Addin. Этот метод требует использования некоторого количества VBA ( в терминах метода обратного вызова, который указывает на базовый надстройку .net ), и работает нормально, пока вы готовы распространить некоторый VBA в своем решении (, то есть проект xls или doc w / vba, или, возможно, родное дополнение ). Обратите внимание, что вам также необходимо отметить comvisible = true
и предоставить метод GetAutomationServiceObject
, чтобы ваш VBA мог ссылаться на ваше дополнение из кода VBA.