我阅读了很多关于这个可怕而烦人的错误的帖子:“访问冲突异常未处理”。但在 Word2007 上只有一篇文章和提升命令“Selection.Find.Execute”。建议的解决方案是重新安装Word2007,这有点微不足道!
我试图解释我的环境。
我有一个使用 WinForms 用 C# 编写的小应用程序,并通过 InteropServices (word.dll) 调用 Word 在 Word 中创建新文档(引发 Word2007 实例)。所有代码都在 .NET Framework 3.5 上运行。在 C# 代码中,我创建了文档,然后搜索了一些内容以替换它。
该程序仅在某些机器上会引发引用的错误,而在其他机器上它正确运行。
这是代码段:
WordApp = new Microsoft.Office.Interop.Word.ApplicationClass();
WordApp.Visible = false;
...
this.copDoc = WordApp.Documents.Add(ref template,
ref missing,
ref missing,
ref isVisible);
this.copDoc.Activate();
...
WordApp.Selection.Find.Execute(ref textData, ref oMissing, ref oMissing, ref oMissing, ref oMissing,ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
if (WordApp.Selection.Find.Found)
{
Range r = WordApp.Selection.Range;
r.Text = DateTime.Today.ToLongDateString();
}
...
当代码以粗体执行时,它会引发“访问冲突”异常,并显示消息“尝试读取或写入受保护的内存。这通常表明其他内存已损坏。”。如果我评论此代码,则文档已创建,这可能意味着异常与整个 Word 无关,而仅与其中的某些特定配置有关。
这是一个例外:
'EdAg.exe': Loaded 'C:\Windows\assembly\GAC\Microsoft.Office.Interop.Word\12.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Word.dll', Binary was not built with debug information.
'EdAg.exe' (Managed): Loaded 'C:\Windows\assembly\GAC\Microsoft.Office.Interop.Word\12.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Word.dll'
First-chance exception at 0x45c7a6f3 in EdAg.exe: 0xC0000005: Access violation.
First-chance exception at 0x6b815095 in EdAg.exe: 0xC0000005: Access violation reading location 0x45c7a6f3.
First-chance exception at 0x6b815095 in EdAg.exe: 0xC0000005: Access violation reading location 0x45c7a6f3.
有人可以建议我以更合理的方式代替重新安装 Word 2007 吗?