【问题标题】:Word Macro to add predefined content at the end of document on click of button单击按钮在文档末尾添加预定义内容的 Word 宏
【发布时间】:2020-07-05 01:53:24
【问题描述】:

我有一个 word 文档,其中有一些要填写的字段,以及一个我要为其分配宏的按钮。单击该按钮时,需要将具有空字段的相同表单附加到文档末尾,包括按钮(可以再次单击并执行相同操作)。

这是我的文件: https://drive.google.com/file/d/0B_2kyqxMx5x4UkxfOHJhOGVPdnc/view?usp=sharing

【问题讨论】:

  • 从BuildingBlocks 的概念入手。并考虑为按钮使用 MacroButton 字段,否则在将代码链接到按钮时会遇到问题。

标签: vba forms ms-word


【解决方案1】:

您想要做的主要问题是将按钮动态链接到要执行的宏代码。最明显的按钮类型是功能区“开发人员”选项卡中的旧版 ActiveX 控件。但这需要在文档的ThisDocument 类模块中有自己的过程条目。虽然可以“动态”向模块添加代码,但这涉及禁用安全选项。

更直接的方法是使用MacroButton 字段。这会在文档中创建一个可点击的文本。它可以显示文本或图形(使其看起来像一个按钮)并被分配任何不带参数的公共 Sub 的名称:

 { MACROBUTTON NameOfMacro Click here }

Ctrl+F9 插入域代码括号; Alt+F9 在字段代码和字段结果之间切换。

Word 2010 及更高版本中的图形:* 这是对 Word 2010 中图形引擎的更改,它会影响 MacroButton 字段中图形对象的行为。单击对象会触发功能区实用程序以处理图形 - 域代码不再“隐藏”图形。您可以通过多种方式解决此问题:

  1. 使用 IncludePicture 字段(适用于旧图形格式)引入外部图片文件。一旦链接图片在该字段中,可以通过选择 IncludePicture 字段并按 Ctrl+Shift+F9 将其转换为静态图片。 Word 尊重旧的图形格式,图片可点击。

    { MacroButton NameOfMacro {IncludePicture "C:\\Path\\picture.jpg" } }

  2. 使用旧的 *.doc 文件格式。请注意,这将限制可以对文档执行的某些操作,但会强制使用旧的图形引擎。

  3. 使用 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。

【讨论】:

  • 还有一个问题:我插入了一张图片,而不是“点击这里”。但它不可点击..为了运行宏,用户必须点击该图像的一小部分灰色背景。我怎样才能使这张图片可点击,所以当它被点击时,分配给 MacroButton 的宏会运行?
  • 添加到“答案”中 - 我没有意识到行为已经改变
  • 我尝试了第一个选项,但是当我将 MacroButton 更改为如下所示时:'{MacroButton MyMacro {IncludePicture "C:\Users\stefanmarkovic\Desktop\Untitled.png" }}' 它只显示文本:"{IncludePicture "C:\Users\stefanmarkovic\Desktop\Untitled.png" },当我按下 Shift+F9 时没有加载图像
  • 不要忘记使用 Ctrl+F9 插入域代码括号!并为文件路径使用双反斜杠 - 我错过了 SO 网站要求我转义反斜杠以使其可见,所以我已经修复了 它是 ctrl+shift+f9 (我做了一些更正分钟前)。
  • 我设法以某种方式使图片可点击,但是当宏复制内容时,我点击新复制的图片,它不运行宏..但我可以点击它周围的那一小部分灰色背景并编辑那个 MacroButton 代码,但我需要它自动像第一个一样。
猜你喜欢
  • 1970-01-01
  • 2022-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 2014-12-29
  • 1970-01-01
  • 2010-11-11
相关资源
最近更新 更多