Существует ли способ получить Горячие клавиши/Ярлыки в Excel VSTO с помощью только C# и никакой VBA?

Таким образом, я хочу получить некоторые ключевые команды на нашем Docuement-уровне дополнение Excel VSTO. Я, может казаться, не нахожу, что способ сделать это, кроме использовать VBA и иметь наше дополнение говорит с VBA. Любая справка/примеры значительно ценилась бы.

Я использую Excel 2007.

7
задан unmounted 19 February 2010 в 23:18
поделиться

2 ответа

Вы можете сделать это только через API вызывает подкласс Excel и следит за ключевыми командами. Это старше, но все еще применяется.

3
ответ дан 7 December 2019 в 07:44
поделиться
  1. Один из методов предполагает использование стороннего решения из Addin-Express . Их продукт включает возможность добавлять сочетание клавиш в качестве свойства к командам меню ленты.

  2. Другой способ - использовать низкоуровневые перехватчики клавиатуры через некоторые Win32 API , которые обычно называют подклассом окон . Вот отличное объяснение с образцом кода, как это сделать. Обратите внимание, что единственная «дополнительная» вещь, которую вам нужно сделать, чтобы заставить этот код «работать» в VSTO, - это переместить метод SetHook () в событие Startup и UnhookWindowsHookEx ( ) к событию Shutdown.

    Прочтите статью Стивена Туба на MSDN.

  3. Наконец, используется свойство OnAction класса Addin. Этот метод требует использования некоторого количества VBA ( в терминах метода обратного вызова, который указывает на базовый надстройку .net ), и работает нормально, пока вы готовы распространить некоторый VBA в своем решении (, то есть проект xls или doc w / vba, или, возможно, родное дополнение ). Обратите внимание, что вам также необходимо отметить comvisible = true и предоставить метод GetAutomationServiceObject , чтобы ваш VBA мог ссылаться на ваше дополнение из кода VBA.

    смотрите здесь, чтобы узнать об этом ...

4
ответ дан 7 December 2019 в 07:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: