Word VBA,Prevoius 代码妨碍了
Word VBA, Prevoius code getting in way
我已经为某人写了一个单词 vba 宏。我已将该文件另存为 .dotm 和 .docm 文件。当我在他的电脑上打开文件时,我发现里面有一堆不是我写的宏!
甚至有时当我在自己的电脑上打开我自己的一个单词宏时,会看到一堆我没有写的代码,通常在 "normal" 选项卡下:
问题是有时word文档中以前的代码会导致新代码出错。
其他类型的项目不会出现这种情况。 VBA 用于 Excel、powerpoint、访问、....
问题 1:为什么会有那个代码?
问题2:如何发送一个word宏文件给别人而不用担心之前的代码会碍事?
Question1: Why is that code there?
Normal.dotm
是标准文档模板。
The Normal.dotm template opens whenever you start Microsoft Office Word 2007, and it includes default styles and customizations that determine the basic look of a document.
当您打开一个空白文档时,我认为默认情况下 Word 将使用此模板,因此该 Normal.dotm 文件中的任何宏都将保留在 "new" 文档中,并且 Normal.dotm
将出现在 VBE 中。 (如果你有一个 Personal.xlsb
文件,这实际上可以类似于 Excel,尽管 Excel 中默认不存在)
Question2: How can I send a word macro file to someone without having to worry about the previous code getting in the way?
在发送到另一个文件之前,您始终可以从文件中手动删除任何 unwanted/unneeded 模块。
或者,分发宏的更好方法是在文档模板或加载项文件中。
或者,您可以将模块代码导出为文本文件,其他用户可以将其导入。
David Zemens 为您提供了可靠的答案,但要添加一些额外的信息来解释此行为:
Normal 模板在 any 文档的 opening/closing/alteration 上触发(全局行为)。因此,如果您将一些宏代码添加到 Normal 模板,即使您打开一个空白的 Word 文档,您也可以预期它会发生。
为避免这种情况,请不要将您不希望 全局 发生的 Normal 代码放在其中,或者遵循一个大卫回答中的备选方案。我的猜测是你想要的宏只有 link 到 某些 文档,在这种情况下你应该将它们放在 Normal 之外,至于没有冲突的行为。如果这实际上是您正在寻找的,我个人更喜欢 AddIns 更适合全局行为,因为它们不会对 Normal 中的现有代码产生任何奇怪的行为。
我已经为某人写了一个单词 vba 宏。我已将该文件另存为 .dotm 和 .docm 文件。当我在他的电脑上打开文件时,我发现里面有一堆不是我写的宏!
甚至有时当我在自己的电脑上打开我自己的一个单词宏时,会看到一堆我没有写的代码,通常在 "normal" 选项卡下:
问题是有时word文档中以前的代码会导致新代码出错。
其他类型的项目不会出现这种情况。 VBA 用于 Excel、powerpoint、访问、....
问题 1:为什么会有那个代码?
问题2:如何发送一个word宏文件给别人而不用担心之前的代码会碍事?
Question1: Why is that code there?
Normal.dotm
是标准文档模板。
The Normal.dotm template opens whenever you start Microsoft Office Word 2007, and it includes default styles and customizations that determine the basic look of a document.
当您打开一个空白文档时,我认为默认情况下 Word 将使用此模板,因此该 Normal.dotm 文件中的任何宏都将保留在 "new" 文档中,并且 Normal.dotm
将出现在 VBE 中。 (如果你有一个 Personal.xlsb
文件,这实际上可以类似于 Excel,尽管 Excel 中默认不存在)
Question2: How can I send a word macro file to someone without having to worry about the previous code getting in the way?
在发送到另一个文件之前,您始终可以从文件中手动删除任何 unwanted/unneeded 模块。
或者,分发宏的更好方法是在文档模板或加载项文件中。
或者,您可以将模块代码导出为文本文件,其他用户可以将其导入。
David Zemens 为您提供了可靠的答案,但要添加一些额外的信息来解释此行为: Normal 模板在 any 文档的 opening/closing/alteration 上触发(全局行为)。因此,如果您将一些宏代码添加到 Normal 模板,即使您打开一个空白的 Word 文档,您也可以预期它会发生。
为避免这种情况,请不要将您不希望 全局 发生的 Normal 代码放在其中,或者遵循一个大卫回答中的备选方案。我的猜测是你想要的宏只有 link 到 某些 文档,在这种情况下你应该将它们放在 Normal 之外,至于没有冲突的行为。如果这实际上是您正在寻找的,我个人更喜欢 AddIns 更适合全局行为,因为它们不会对 Normal 中的现有代码产生任何奇怪的行为。