使用 VBA 在 Word 中创建键盘 hotkeys/shortcuts
Creating keyboard hotkeys/shortcuts in Word with VBA
出于某种原因,我 normal.dotm 文件中的快捷方式有时会被删除,
所以我知道我可以通过在 word 中四处点击来创建快捷方式 (https://wordribbon.tips.net/T008058_Assigning_a_Macro_to_a_Shortcut_Key.html)
但我想像在 excel:
中那样对它们进行硬编码
Sub keyBoardShortCuts()
Application.OnKey "%^d", "updateDB"
Application.OnKey "%^p", "openProjectList"
Application.OnKey "%^m", "addNewLS"
Application.OnKey "%^l", "createLS"
Application.OnKey "%^g", "loadGui"
Application.OnKey "%^b", "Custom_Button_Click"
End Sub
Private Sub Workbook_Open()
Call keyBoardShortCuts
End Sub
但是这在 word 中不起作用,那么在 word 中这样做的语法是什么?
您需要使用 KeyBindings
和 Enum WdKey
中的常量(按 F2 查看列表):
With Application.KeyBindings
.Add KeyCode:=BuildKeyCode(wdKeyAlt, wdKeyControl, wdKeyD), _
KeyCategory:=wdKeyCategoryCommand, _
Command:="updateDB"
.Add KeyCode:=BuildKeyCode(wdKeyAlt, wdKeyControl, wdKeyP), _
KeyCategory:=wdKeyCategoryCommand, _
Command:="openProjectList"
.Add KeyCode:=BuildKeyCode(wdKeyAlt, wdKeyControl, wdKeyM), _
KeyCategory:=wdKeyCategoryCommand, _
Command:="addNewLS"
'...
End With 'Application.KeyBindings
出于某种原因,我 normal.dotm 文件中的快捷方式有时会被删除,
所以我知道我可以通过在 word 中四处点击来创建快捷方式 (https://wordribbon.tips.net/T008058_Assigning_a_Macro_to_a_Shortcut_Key.html)
但我想像在 excel:
中那样对它们进行硬编码Sub keyBoardShortCuts()
Application.OnKey "%^d", "updateDB"
Application.OnKey "%^p", "openProjectList"
Application.OnKey "%^m", "addNewLS"
Application.OnKey "%^l", "createLS"
Application.OnKey "%^g", "loadGui"
Application.OnKey "%^b", "Custom_Button_Click"
End Sub
Private Sub Workbook_Open()
Call keyBoardShortCuts
End Sub
但是这在 word 中不起作用,那么在 word 中这样做的语法是什么?
您需要使用 KeyBindings
和 Enum WdKey
中的常量(按 F2 查看列表):
With Application.KeyBindings
.Add KeyCode:=BuildKeyCode(wdKeyAlt, wdKeyControl, wdKeyD), _
KeyCategory:=wdKeyCategoryCommand, _
Command:="updateDB"
.Add KeyCode:=BuildKeyCode(wdKeyAlt, wdKeyControl, wdKeyP), _
KeyCategory:=wdKeyCategoryCommand, _
Command:="openProjectList"
.Add KeyCode:=BuildKeyCode(wdKeyAlt, wdKeyControl, wdKeyM), _
KeyCategory:=wdKeyCategoryCommand, _
Command:="addNewLS"
'...
End With 'Application.KeyBindings