1

Как мне создать и использовать клавиатуру для запуска макросов VBA?

Это связано с вопросами «Как запустить макрос, когда кто-то печатает» или "Есть ли в VBA событие для ввода в MS Word". Обычно ответом было то, что вам нужно создать хук клавиатуры winAPI и использовать его для запуска макроса - но ни один из ответов, которые я смог найти, на самом деле не сказал нам, как создать хук, и ни один из примеров кода, который я смог найти, не сработал бы. Большинство результатов поиска Google по этой теме приводят к 404-м или перемещенным статьям.

Редактировать: конечная цель состоит в том, чтобы иметь возможность инициировать событие в любое время, когда изменяется тело документа, поэтому запускайте функцию каждый раз, когда нажимается одна буквенная клавиша, и используйте цифровые клавиши от 0 до 9 в качестве горячих клавиш без использования Ctrl, Alt, или любые клавиши-модификаторы.

Может кто-то, кто лучше разбирается в зацепках клавиатуры VBA, пожалуйста, опубликуйте пример макро-функции, которая вызывается при любом нажатии клавиши. Или нажатием определенных клавиш?

2 ответа2

0

Это было сделано в 2010 году, но должно быть аналогичным в 2007 году.

Вы можете создать свой макрос и затем перейти к параметрам - настроить - сочетания клавиш: настроить

И назначьте это через там.


В качестве альтернативы, поскольку это не может быть выполнено с помощью VBA, необходимо записать макрос, назначенный ярлыку, а затем изменить код.

На вкладке разработчика нажмите "запись макроса" и назначьте макрос клавиатуре -

Затем назначьте свой ярлык -

Когда вы прекращаете запись, вы можете зайти в VBE и изменить его на то, что вам нужно. В коде не будет указаний на наличие сочетания клавиш.

0

Краткий ответ: не пытайтесь делать это в VBA. Найдите другое средство сопоставления 0-9 с сочетаниями клавиш, которые понимает Word. Драйверы Microsoft IntelliType могут сделать это, как и AutoHotKey. Оба имеют возможность сделать это сопоставление только для Word, не влияя на другие приложения. AutoHotKey обладает гораздо большей мощностью и может легко сопоставить одну клавишу с несколькими нажатиями клавиш.

Длинный ответ: зацепки клавиатуры очень трудно понять даже в таких языках, как VB.NET и C #, поскольку они не являются частью .NET. Например, если вы подключите очередь клавиатуры, но не отсоедините ее, когда произойдут очень плохие вещи (например, сбой Visual Studio). C++ не лучше, но программисты C++ привыкли работать в неумолимой среде. (IWO все время терпит крах.)

Я рекомендую посмотреть на AutoHotKey. С другой стороны, клавиатурные макросы - это его сила. Недостатком является то, что синтаксис противоречив. Я должен смотреть на свой шпаргалку после многих лет периодического использования.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .