30

我为 Microsoft Office Word 构建了一个加载项。当 Word 以管理员身份运行时使用加载项没有问题,但当它不以管理员身份运行时,访问功能区元素有两个常见异常。

第一个例外:

Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.Office.Core.IRibbonUI'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{000C03A7-0000-0000-C000-000000000046}' failed due to the following error:  could not be found. (Exception from HRESULT: 0x80030002 (STG_E_FILENOTFOUND)).
   at Microsoft.Office.Core.IRibbonUI.InvalidateControl(String ControlID)

当控件被以下代码无效时,会发生此错误:

ribbon.InvalidateControl("control-id");

第二个例外:

Unable to cast COM object of type 'Microsoft.Office.Interop.Word.ApplicationClass' to interface type 'Microsoft.Office.Interop.Word._Application'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{00020970-0000-0000-C000-000000000046}' failed due to the following error:  could not be found. (Exception from HRESULT: 0x80030002 (STG_E_FILENOTFOUND)).
   at Microsoft.Office.Interop.Word.ApplicationClass.get_Selection()

此错误发生在以下代码的最后一行:

object wdStory = Word.WdUnits.wdStory;
object wdMove = Word.WdMovementType.wdMove;
WrdApp.Selection.EndKey(ref wdStory, ref wdMove)

我该如何解决这个问题?

4

6 回答 6

59

问题解决了!

我之前安装过Office 2010,所以Windows Registry有一些不一致的地方。要修复它们,请打开regedit并从错误中查找 CLSID。

对于第二个错误,您会发现类似的内容:

HKEY_CLASSES_ROOT\Interface\{00020970-0000-0000-C000-000000000046}

使用子键:

  • ProxyStubClsid
  • ProxyStubClsid32
  • 类型库

看看 里面的(Default)VersionTypeLib

现在找到下面的节点,使用(Default)值 as <TypeLib ID>

HKEY_CLASSES_ROOT\TypeLib\<TypeLib ID>\<version>

作为此元素的子元素,您会发现多个元素,其中一个是Version第一个注册表的。如果你检查其他元素,你会发现它们没有指向任何东西。删除其他!!!解决了!

于 2012-10-18T20:02:42.107 回答
8

升级到最新的 Office 版本后,我开始遇到同样的异常。我尝试了一些建议的修复方法,包括以类似于@Victor 描述的方式清理注册表。

最终的帮助(即使它可能是多种因素的组合)是“修复”安装:

Programs and Features→ 最新Office版本 → Repair

于 2015-10-13T17:37:44.277 回答
1

办公室维修为我工作。在我的情况下,我安装了 Project,我认为它更改了配置,并且无法调用将数据从 Excel 工作簿迁移到 SQL 的过程

于 2018-01-19T10:05:04.940 回答
0

@Victor 你让我走上了正确的道路。我的问题不是注册表中的多个值,而是 Office365 从未添加的缺失值。多亏了你,我才能找到自己的解决方案。一千多谢。

任何仍在寻找解决方案的人都可以在这里找到详细信息。

于 2016-03-08T00:53:01.523 回答
0

我今天在使用 VS2015 和 Office 2013 时遇到了同样的问题。将平台目标更改为 x64 对我有用。

于 2017-03-20T05:14:47.410 回答
0

只需安装 Office 2010 / MS word / .NET 可编程性支持。

于 2015-09-17T06:46:29.223 回答