Word.ApplicationClass.Activedocument 突然出现异常

Ret*_*zan 4 c# vsto ms-word comexception office365

我在 Word VSTO 加载项项目中有这样一行代码,它曾经可以工作,但突然不再工作了:

Microsoft.Office.Interop.Word.Document doc = Globals.ThisAddIn.Application.ActiveDocument;
Run Code Online (Sandbox Code Playgroud)

在它按预期返回Document对象之前,我可以毫无问题地读取和操作它。但现在它抛出System.Runtime.InteropServices.COMException异常。“Word遇到了问题。” 很有帮助。该异常包含 0x800A13E9 的 HRESULT,到目前为止这也没有帮助我。内存不足还是怎么的?我不知道。

新行为似乎是在除夕夜左右开始的(不确定,因为过去几周我没有使用该加载项),并且它是在安装加载项时开始的,即代码中没有任何更改,重新编译或重新安装以使其发生。此后我重建了该项目,认为证书可能已过期或其他原因,但错误仍然发生。

也许值得注意的是,我仍然可以访问应用程序实例的其他属性。例如,这一行不会抛出异常:

int numDocuments = Globals.ThisAddIn.Application.Documents.Count;
Run Code Online (Sandbox Code Playgroud)

但是当我使用 迭代集合时Documents,foreach它只是跳过循环,就好像计数为零一样。

我唯一能想到的是 Office (365) 的更新破坏了与 VSTO 相关的某些内容。但我从哪里开始调试呢?


好的,所以我尝试创建一个新的 Word VSTO 加载项,不更改任何默认项目属性,而是添加带有单个按钮的单个功能区和以下方法:

private void button1_Click(object sender, RibbonControlEventArgs e)
{
    try
    {
        var x = Globals.ThisAddIn.Application.ActiveDocument;
    }
    catch  (Exception ex)
    {
        ;
    }
}
Run Code Online (Sandbox Code Playgroud)

它在获取 ActiveDocument 属性时抛出完全相同的异常。不过,我确实注意到,加载加载项时还会抛出两个异常,加载原始加载项时也会抛出这些异常(以前工作正常):

Exception thrown: 'System.Deployment.Application.DeploymentException' in System.Deployment.dll
Exception thrown: 'System.Security.Cryptography.CryptographicException' in Microsoft.VisualStudio.Tools.Applications.Hosting.dll
Run Code Online (Sandbox Code Playgroud)

它们不会阻止加载项加载和运行,但也许它们与问题有关?不知道去年问题出现之前是否也被抛出过。

不过,我确实有几个 Excel 加载项,它们仍然可以在相同版本的 VSTO、Visual Studio 和 Office 上正常运行,并且它们在加载时不会抛出上述两个异常。所以这个问题似乎是Word特有的。


现在我尝试回滚到 Office 365 版本 1810(10 月版本),该版本之前肯定有效,所以我认为这可能不是 Office 更新引入的问题。这是另一回事。大概。

并不是说它真的对我有多大帮助,但至少我已经排除了这种可能性。大概。

Eic*_*chi 5

该问题似乎是由Windows 10 October 2018 Update(或11月)触发的。受影响的客户具有特殊的 Windows 区域设置:示例:“英语(瑞士)”。

解决方案:
将 Windows 区域设置格式更改为“英语(英国)”或“英语(美国)”

对于受影响的客户(未安装加载项),VBA 编辑器也不再正常工作。打开过程中直接出现错误“Word 遇到问题”(Visual Basic 错误 5097)。与 C# 中的 Application.ActiveDocument 发生的错误相同