您想要做的主要问题是将按钮动态链接到要执行的宏代码。最明显的按钮类型是功能区“开发人员”选项卡中的旧版 ActiveX 控件。但这需要在文档的ThisDocument 类模块中有自己的过程条目。虽然可以“动态”向模块添加代码,但这涉及禁用安全选项。
更直接的方法是使用MacroButton 字段。这会在文档中创建一个可点击的文本。它可以显示文本或图形(使其看起来像一个按钮)并被分配任何不带参数的公共 Sub 的名称:
{ MACROBUTTON NameOfMacro Click here }
Ctrl+F9 插入域代码括号; Alt+F9 在字段代码和字段结果之间切换。
Word 2010 及更高版本中的图形:* 这是对 Word 2010 中图形引擎的更改,它会影响 MacroButton 字段中图形对象的行为。单击对象会触发功能区实用程序以处理图形 - 域代码不再“隐藏”图形。您可以通过多种方式解决此问题:
-
使用 IncludePicture 字段(适用于旧图形格式)引入外部图片文件。一旦链接图片在该字段中,可以通过选择 IncludePicture 字段并按 Ctrl+Shift+F9 将其转换为静态图片。 Word 尊重旧的图形格式,图片可点击。
{ MacroButton NameOfMacro {IncludePicture "C:\\Path\\picture.jpg" } }
使用旧的 *.doc 文件格式。请注意,这将限制可以对文档执行的某些操作,但会强制使用旧的图形引擎。
- 使用 WindowBeforeDoubleClick 事件或 WindowSelectionChange 事件代替 MacroButton 字段来运行代码。
*除了取消链接 IncludePicture 字段(我自己发现),此信息来自this discussion on the Microsoft Answers site
如果您想通过单击而不是双击(默认)运行宏,您需要运行以下代码行。这适用于整个 Word 应用程序,并且需要在每次 Word 重新启动时运行。您可以将其放在模板中的AutoNew 宏/文档中的AutoOpen 宏中:
Application.Options.ButtonFieldClicks = 1
存储要重复插入的全部内容的最简单方法是作为 Building Block(以前称为 AutoText)。
BuildingBlocks 存储在模板中。如果您的文档是从模板创建的,那将是合乎逻辑的地方。另一种可能性是您为此目的使用的特殊模板。 Normal.dotm 也可以使用,但请记住,这有时会被删除。
(注意:如果您使用的文档模板也是存储附加到宏按钮的宏的最佳位置。)
设置完成后,您需要做的所有代码就是在文档末尾插入 BuidlingBlock。