Зарезервированные имена методов в MS Word VBA - PullRequest
3 голосов
/ 22 июня 2019

В VBA для MS-Word и, несомненно, в остальной части Office, есть некоторые «специальные» имена методов (макросов), которые перехватывают определенные комбинации клавиш / команд пользовательского интерфейса; например:

Нажатие Ctrl + z (или значок отмены в QAT) перехватывается Public Sub EditUndo()

Нажатие Ctrlk + y (или значок повторения в QAT) перехватывается Public Sub EditRedo()

Документация MS API охватывает EditUndo и EditRedo и помогает найти некоторые другие методы, которые могут быть переопределены.

Но ни NextCell, ни PrevCell, по-видимому, не включены в документацию по API VBA. Например, Tab поведение изменяется, когда выбор находится в таблице документа:

Нажатие Tab перехватывается Public Sub NextCell()

Нажатие Shift + Tab перехватывается Public Sub PrevCell()

Это заставило меня задуматься о том, существуют ли какие-либо другие специальные имена методов ... и как их найти.

Итак, мой вопрос (ответ, найденный во время опроса):

Где найти полный список имен методов для MS-Word, которые можно использовать для переопределения команд по умолчанию?

1 Ответ

2 голосов
/ 22 июня 2019

Открытая спецификация 2.9.75 Fci предоставляет длинный список имен методов, некоторые из которых могут переопределять команды.

Перечисление Fci предоставляет 13-разрядный неподписанныйцелое число, которое указывает встроенную команду.

snippet from 2.9.75 Fci

Например, вы можете включить метод, подобный следующему:

Sub UnlinkFields()
    ' Intercepts Ctrl+Shift+F9 to prevent user from 
    ' unlinking fields and breaking your document
End Sub

Некоторые примечания по использованию

  • Если вы поместите эти методы в шаблон Normal.dotm, они должны иметь глобальную область действия и применяться ко всем открытым документам..

  • Помещение метода в определенный шаблон документа означает, что он будет применяться только к документам на основе этого шаблона

  • Модуль может быть Public илиПриватный, т. Е. Они все еще работают, если вы используете Option Private Module.

  • Метод может быть Публичным или Приватным (по крайней мере, насколько мне известно)

Методом может быть Sub или Function, например, обе эти работы:

Private Function DoubleUnderline()
    ' Ctrl + Shift + D
    Stop
End Function

и

Public Sub DoubleUnderline()
    ' Ctrl + Shift + D
    Stop
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...