WINWORD.EXE /Automation 和 Normal.dotm 错误

WINWORD.EXE /Automation 和 Normal.dotm 错误

我在使用 Word 的第三方插件时遇到了问题,我认为该问题与 ActiveX/自动化有关。以下是我所知道的情况:

  • 当我使用该插件从供应商的网站创建多个新的 Word 文件时,当我尝试在打开第一个文档后关闭每个文档时,我收到错误消息,"The file is in use by another application or user. (C:\Users\mooret\AppdData\...\Normal.dotm)"
  • 我对 ActiveX 或自动化不太了解。我知道该插件使用命令 打开 Word wordapp = new ActiveXObject("Word.Application"),如果我理解正确的话,该命令会转换为winword.exe /automation -embedded
  • 如果 Word 已经打开(无论如何),并且我使用命令打开第二个实例winword.exe /automation,然后尝试关闭第二个实例,则会出现上述错误。这告诉我问题不在于加载项。这是我环境中的问题。
  • 我有两台机器。据我所知,它们都是一样的。相同的硬件、相同的 Windows 7 版本、相同的属性和插件等。在一台机器上我遇到了错误,而在另一台机器上没有。我查看了所有我能想到的可能相关的设置/注册表项/权限。我只是找不到任何可以解释不同行为的东西。
  • 在出现错误的机器上,当我删除我们的模板并让 Word 创建自己的模板时,错误消失了。但是,我在两台机器上使用相同的模板。我认为问题不仅仅出在模板上。

在过去几周里,我阅读了 Google 就此问题提供的所有信息,排除了很多可能性。但是,如果不使用 AutoClose 宏或删除自定义 Normal.dotm,我仍然无法消除错误。这两种方法都不是好的长期解决方案。而且它在一台机器上运行良好,但在另一台机器上却不行,这说明我一定在环境中遗漏了某些东西。任何帮助都将不胜感激。

更新:2013 年 4 月 10 日

经过更多实验,我了解到以下几点:

  • 使用 /automation 开关打开 winword.exe 时,Word 将作为目的而不是应用
  • 错误仍然存​​在仅有的使用 /automation 开关打开 Word 时发生这种情况。
  • 不知何故,问题似乎与文档中的样式有关。我采用一个没有导致错误的干净模板,并开始替换我们公司模板中的 XML 文件,当我将 Word 的原生文件替换styles.xml为我们自己的文件时,错误就消失了。
  • 此外,当我换出时styles.xml,Word 会开始询问我是否要保存对文档的更改,即使我尚未进行任何更改。如果我与 iManage 断开连接,它也会提示我连接。更新:2013 年 4 月 11 日 原来这是个转移注意力的借口。经与我们的 FileSite 管理员确认,这种情况发生只是因为我们的一些插件正在调用 FileSite。环境中的任何变化都可能导致此行为。

我仍在深入研究 XML 以了解我可以学到什么,但如果这能引发任何想法,我完全愿意接受建议。

更新:2013 年 4 月 10 日

经过大量的复制和粘贴,试图找出到底是什么styles.xml导致了错误。最后,我可以自信地说,就是这个:

<w:style w:type="paragraph" w:default="1" w:styleId="Normal">
<w:name w:val="Normal"/>
<w:qFormat/>
<w:pPr>
<w:spacing w:after="0"/>
</w:pPr>
<w:rPr>
<w:rFonts w:ascii="Times New Roman" w:eastAsia="Times New Roman" w:hAnsi="Times New Roman" w:cs="Times New Roman"/>
<w:szCs w:val="20"/>
<w:lang w:eastAsia="en-US"/>
</w:rPr>
</w:style>

进一步分解,可以归结为以下这一点:

w:eastAsia="Times New Roman"

如果没有那部分,一切都会顺利进行。在此先感谢大家的帮助。

相关内容