MS Word VBA中的保留方法名称

时间:2019-06-22 04:01:05

标签: vba ms-word

在MS-Word的VBA中,毫无疑问,在Office的其余部分中,有一些“特殊”方法(宏)名称会拦截某些按键/ UI命令。例如:

  

按下 Ctrl + z (或QAT上的撤消图标)被Public Sub EditUndo()

拦截      

按下 Ctrlk + y (或QAT上的重做图标)会被Public Sub EditRedo()

拦截

MS API文档涵盖了EditUndoEditRedo,并有助于找到其他可以被覆盖的方法。

但是NextCellPrevCell似乎都未包含在VBA API文档中。例如,只要在文档表中进行选择,就会更改 Tab 行为:

  

按下 Tab Public Sub NextCell()拦截

     

按下 Shift + Tab Public Sub PrevCell()截获

这让我想知道是否还有其他特殊方法名称...以及如何找到它们。

所以,我的问题(在询问过程中找到答案)是:

在哪里可以找到用于替代默认命令的MS-Word方法名称的完整列表?

1 个答案:

答案 0 :(得分:2)

open specification 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模板中,它们应该具有 全球范围,并适用于所有打开的文档。

  • 将方法放入特定的文档模板意味着它将 仅适用于基于该模板的文档

  • 该模块可以是“公共”或“专用”,即如果您使用 Option Private Module

  • 该方法可以是“公开”或“私有”(至少根据我的测试 去)

方法可以是Sub或Function,例如,这两种方法都可以:

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

Public Sub DoubleUnderline()
    ' Ctrl + Shift + D
    Stop
End Function