По ссылкам, которыми поделились в посте, я наткнулся на программу AutoHotKey. После некоторых исследований я настроил систему, в которой AutoHotkey выполняет обнаруживающую часть, а затем вызывает макрос в слове. Я использую следующий скрипт горячих клавиш:
Keybinding for a-x before this
y::
send y
StartLabel("a")
return
z::
send z
StartLabel("a")
return
Space::
send {Space}
StartLabel("a")
return
Backspace::
send {Backspace}
StartLabel("a")
return
^Backspace::
send ^{Backspace}
StartLabel("a")
return
StartLabel(x)
{
word:=ComObjActive("word.application")
word.run( "Writeass" ) <-- macro name. No need to define the module first
}
Этот скрипт вызывает макрос каждый раз, когда нажимается одна из определенных клавиш.
С помощью простого bat-файла я могу запустить и закрыть скрипт (чтобы он не работал в фоновом режиме, когда wordt не открыт).
Код Bat для запуска скрипта:
start C:\path to Autohotkey script\WriteAssistant.ahk
Bat-код для завершения скрипта (уничтожение процесса autoHotKey)
taskkill /im AutoHotkey.exe
Я использую следующий скрипт vba, чтобы запустить и закрыть скрипт горячей клавиши из макроса слова (в моем случае я сделал кнопку на ленточной панели, чтобы запустить макрос, и первым делом он запустил скрипт autoHotKey):
Path = "C:\path\start.bat"
Shell Path
И что самое приятное, я не заметил потери скорости.