我为某人写过vba宏。我已将文件保存为.dotm和.docm文件。当我在他的电脑上打开文件时,我看到那里有一堆宏,我没有写过!
即使有时当我在自己的计算机上打开我自己的单词宏时,也会看到一堆我没有写过的代码,通常是在" normal"标签:
问题有时,word文档中的前一个代码可能会导致新代码出错。
其他类型的项目不会发生这种情况。 VBA for Excel,powerpoint,access,....
问题1:为什么那里有代码?
问题2:如何向某人发送word宏文件,而不必担心以前的代码会妨碍?
答案 0 :(得分:3)
问题1:为什么那里有代码?
Normal.dotm
是标准文档模板。
每当启动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更适合全球行为,如果这实际上是你正在寻找的东西,因为它们不会对正常中的现有代码产生任何奇怪的行为。