首页 > 解决方案 > 当我调用 new Microsoft.Office.Interop.Word.Application() 时如何修复异常

问题描述

当我调用 new Microsoft.Office.Interop.Word.Application() 进行初始化时,发生了错误。消息如下:

无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象转换为接口类型“Microsoft.Office.Interop.Word._Application”。此操作失败,因为 IID 为“{00020970-0000-0000-C000-000000000046}”的接口的 COM 组件上的 QueryInterface 调用因以下错误而失败:库未注册。(来自 HRESULT 的异常:0x8002801D (TYPE_E_LIBNOTREGISTERED))。

在 MSDN( this page)中搜索后获得了一些帮助。但是当我检查HKEY_CLASSES_ROOT\Wow6432Node\Interface{00020970-0000-0000-C000-000000000046}\TypeLib时,我发现我的“版本”是 3.0 而不是 8.6,“(默认)”是 {00020905-0000-4B30-A977- D214852036FF} 而不是 {00020905-0000-0000-C000-000000000046}。而在HKEY_CLASSES_ROOT\Wow6432Node\TypeLib{00020905-0000-0000-C000-000000000046}中,应该只有1 个名为 8.7 而不是 8.6 的子项。

我试图将HKEY_CLASSES_ROOT\Wow6432Node\Interface{00020970-0000-0000-c000-000000000046}\TypeLib中的版本更改为 8.7 和(默认)更改为 {00020905-0000-0000-0000-c000-000000000046},但它仍然不起作用。我还根据此页面说明尝试“快速修复”并完全重新安装 Office。如何修改注册表项才能成功?

我的 Word 版本是 Professional 2019(即点即用)。

另外,我确定我的代码是正确的。因为我在另一台完美执行的计算机上编写了代码。

这是我的一些代码:

    Microsoft.Office.Interop.Word.Application wordApp;
    Microsoft.Office.Interop.Word.Document wordDoc;
    wordApp = new Microsoft.Office.Interop.Word.Application();
    wordApp.Visible = visible;
    Object Nothing = Missing.Value;
    wordDoc = wordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);

标签: c#ms-wordcomms-officeoffice-interop

解决方案


  1. 重新安装word(如果你有1个以上,请保持最新版本)

  2. 如果您的项目中有字库对象引用,请确保您的客户端电脑有它,以便打开 regedit 并搜索:

    计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib{ 00020905-0000-0000-C000-000000000046}\xx

    其中 xx 是词库版本

  3. 如果你有多个xx,删除那个为空的,应该可以解决!


推荐阅读