【问题标题】:VBA code in a template模板中的 VBA 代码
【发布时间】:2014-11-06 18:36:36
【问题描述】:

在 Word 模板中,我有一个带有 VBA 代码的命令按钮。

问题是当使用该模板创建文档时代码会丢失。该按钮仍然可见,但它背后的 VBA 代码由于某种原因消失了。这会导致按钮只是可点击而不执行任何操作。

文档以 .docx 格式保存。

如何将按钮“粘”到其代码上,以免丢失?

【问题讨论】:

  • 模板和文件以什么格式保存?根据定义,以 .dotx 或 .docx 格式保存的任何内容都会丢失所有 VBA 代码。
  • 模板以 .dotm 格式保存。所以通常他们应该保留 VBA 代码。经过一些测试,我认为命令按钮不能用于此问题。我现在尝试使用一个调用存储在 normal.dot 中的宏的字段来实现。我今天将对此进行更多测试,并在稍后报告最终结果。
  • ...是的,文档以什么格式保存? .docx 还是 .docm?
  • 文档保存为docx。但这并不重要,因为该文档仅用于宏。这个宏根据他们正在处理的情况启动一个带有参数的程序。

标签: vba templates ms-word


【解决方案1】:

首先,确保您的 VBA 代码保存在您提供给所有人的 .dotm 模板中(而不是保存在您的个人 normal.dot/dotm 模板中 - 这仅在您的计算机上可用)。

然后,确保从模板生成的文档保存为 .docm(不是 .docx)。

.docx 文档不能包含 VBA 代码。根据定义,以 .dotx 或 .docx 格式保存的任何内容都将丢失所有 VBA 代码。

在你说的评论中

“这没关系,因为文档只是用于宏。”

这是不正确的;这很重要。 .docx 文档不能“用于”宏,因为它们不能包含宏。

【讨论】:

  • 但是当我的模板保存为 .docm 并随后用于在我的电脑上生成 .doc 文档时,宏仍然有效。问题是宏没有与模板一起传输。虽然我将宏保存在 normal.dot
  • 现在我明白你的意思了。您的回答可能是我问题的解决方案。我知道解释有点弱,但问题不是那么简单。感谢您的帮助!
【解决方案2】:

为了使宏始终可用,您需要将宏存储在普通模板中。

例如录制宏时,选择将宏存储在中的所有文档(Normal.dot)。

【讨论】:

  • 但是我也可以将命令按钮的代码存储在那里吗?出于简单的原因,客户端只需按下按钮,代码就会自动开始运行。
  • 是的,您可以存储在用户普通模板中。所以当他们打开单词时,按钮总是在那里。
  • 这并没有真正解决这个特定问题。存储在 .dotm 模板中的宏会传播到从该模板生成的 .docm 文档。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-11
相关资源
最近更新 更多