首页 > 解决方案 > MS Word VBA 中的保留方法名称

问题描述

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

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

Ctrlk+ y(或 QAT 上的重做图标)被拦截Public Sub EditRedo()

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

但VBA API 文档中似乎NextCell也不包含任何内容。PrevCell例如Tab,只要选择在文档表中,就会改变行为:

按下Tab被拦截Public Sub NextCell()

Shift+Tab被拦截Public Sub PrevCell()

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

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

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

标签: vbams-word

解决方案


开放规范 2.9.75 Fci提供了一长串方法名称,其中一些可以覆盖命令。

Fci 枚举提供了一个 13 位无符号整数,用于指定内置命令。

来自 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

  • 该方法可以是公共的或私有的(至少就我的测试而言)

该方法可以是一个子或函数,例如这两个工作:

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

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

推荐阅读