Word VBA,以前的代码正在进行中

时间:2015-03-26 14:52:56

标签: vba ms-word word-vba

我为某人写过vba宏。我已将文件保存为.dotm和.docm文件。当我在他的电脑上打开文件时,我看到那里有一堆宏,我没有写过!

即使有时当我在自己的计算机上打开我自己的单词宏时,也会看到一堆我没有写过的代码,通常是在" normal"标签: enter image description here

问题有时,word文档中的前一个代码可能会导致新代码出错。

其他类型的项目不会发生这种情况。 VBA for Excel,powerpoint,access,....

问题1:为什么那里有代码?

问题2:如何向某人发送word宏文件,而不必担心以前的代码会妨碍?

2 个答案:

答案 0 :(得分:3)

  

问题1:为什么那里有代码?

Normal.dotm是标准文档模板

https://support.office.com/en-ie/article/Change-the-Normal-template-Normaldotm--06de294b-d216-47f6-ab77-ccb5166f98ea?ui=en-US&rs=en-IE&ad=IE

  

每当启动Microsoft Office Word 2007时,Normal.dotm模板都会打开,它包含用于确定文档基本外观的默认样式和自定义项。

当你打开一个空白文档时,我认为默认情况下Word将使用这个模板,因此Normal.dotm文件中的任何宏都将保留在" new"文档,以及Normal.dotm将出现在VBE中。 (如果您有Personal.xlsb文件,这实际上可能类似于Excel,尽管默认情况下这在Excel中不存在)

  

问题2:如何向某人发送word宏文件而不必担心以前的代码妨碍?

在发送给他人之前,您始终可以从文件中手动删除任何不需要/不需要的模块。

或者,更好的分发宏的方法是在文档模板或外接程序文件中。

或者,您可以将模块代码导出为文本文件,其他用户可以导入它。

答案 1 :(得分:2)

David Zemens为您提供了可靠的答案,但是要添加一些其他信息来解释此行为: 正常模板会在 任何 文档(全局行为)的打开/关闭/更改时触发。因此,如果您向普通模板添加一些宏代码,即使打开空白Word文档,也可能会发生这种情况。

要避免这种情况,请不要将代码置于正常中,而不是全球,或者请遵循其中一个替代方案大卫的回答。我猜您希望宏只链接到某些文档,在这种情况下,您应该将它们置于 Normal 之外,以免出现冲突行为。我个人更喜欢AddIns更适合全球行为,如果这实际上是你正在寻找的东西,因为它们不会对正常中的现有代码产生任何奇怪的行为。