1

Тема: Макрос, назначающий командам и макросам Word «горячие клавиши»

В некоторых случаях бывает необходимо в пакетном режиме назначить в Word тем или иным командам и макросам «горячие клавиши».
Макрокоманда, назначающая «горячие клавиши», имеет следующий принципиальный вид:

    CustomizationContext = NormalTemplate
    KeyBindings.Add KeyCode:=BuildKeyCode(<Сочетание_клавиш>), _
        KeyCategory:=wdKeyCategoryCommand, Command:="<Наименование_команды/макроса>"

Элемент <Сочетание_клавиш>:

wdKey<Буква/цифра>, [wdKeyControl,] [wdKeyShift,] [wdKeyAlt]

где:
- wdKey<Буква/цифра> – нажатие клавиши, соответствующей указанной букве или цифре,
- wdKeyControl – нажатие клавиши Ctrl,
- wdKeyShift – нажатие клавиши Shift,
- wdKeyAlt – нажатие клавиши Alt.

Например:
wdKeyS, wdKeyControl – сочетание клавиш Ctrl+S
wdKeyQ, wdKeyControl, wdKeyAlt – сочетание клавиш Ctrl+Alt+Q
wdKeyP, wdKeyControl, wdKeyShift, wdKeyAlt – сочетание клавиш Ctrl+Shift+Alt+P


Элемент <Наименование_команды/макроса> можно взять из окна Настройка клавиатуры (для Word 2013: Файл – Параметры – Настроить ленту – Настройка…). Например:
FileSave – команда сохранения файла
InsertPicture – вставка рисунка из графического файла и т.д.

Для описания наименования макроса используется следующая конструкция:

<Имя_шаблона.Имя_модуля.Имя_макроса>

Указанные параметры можно найти в окне редактора VBA.
Например:
Normal.NewMacros.CompletePreparationSelection – шаблон Normal.dotm или Normal.dot, модуль (обычно в разделе Modules) NewMacros, макрос CompletePreparationSelection.


Пример модуля, назначающего «горячие клавиши»:

Sub HotKeys()
'
    CustomizationContext = NormalTemplate
    KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyQ, wdKeyControl, wdKeyAlt), _
        KeyCategory:=wdKeyCategoryCommand, Command:="DocEncryption"
     ' Команде DocEncryption назначается сочетание клавиш Ctrl+Alt+Q 

    CustomizationContext = NormalTemplate
    KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyS, wdKeyControl), KeyCategory:= _
        wdKeyCategoryCommand, Command:="FileSave"
     ' Команде FileSave назначается сочетание клавиш Ctrl+S 

    CustomizationContext = NormalTemplate
    KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyP, wdKeyControl, wdKeyShift, _
        wdKeyAlt), KeyCategory:=wdKeyCategoryCommand, Command:="Normal.NewMacros.CompletePreparationSelection"
     ' Макросу Normal.NewMacros.CompletePreparationSelection назначается сочетание клавиш Ctrl+Shift+Alt+P: 

End Sub
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

2

Re: Макрос, назначающий командам и макросам Word «горячие клавиши»

Небольшое дополнение:

Если макрос, назначающий «горячие клавиши» другим макросам,  находится в том же модуле, что и эти макросы, то можно указывать только имена этих макросов без указания пути к ним. 
Проверено - это работает.

Например:

    CustomizationContext = NormalTemplate
    KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyE, wdKeyControl, wdKeyAlt), _
        KeyCategory:=wdKeyCategoryCommand, Command:="LangEngUS"
    KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyR, wdKeyControl, wdKeyAlt), _
        KeyCategory:=wdKeyCategoryCommand, Command:="LangRus"
    KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyV, wdKeyControl, wdKeyAlt), _
        KeyCategory:=wdKeyCategoryCommand, Command:="PasteText"

В данном примере макросам с именами LangEngUS, LangRus и PasteText, лежащим в том же модуле, назначаются соответственно "горячие клавиши" CTRL+ALT+E, CTRL+ALT+R и CTRL+ALT+V.

Примечание - Для большей надежности результата в именах макросов, которым назначаются "горячие клавиши", лучше не использовать кириллические символы.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.