c# - 当我调用 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);
解决方案
重新安装word(如果你有1个以上,请保持最新版本)
如果您的项目中有字库对象引用,请确保您的客户端电脑有它,以便打开 regedit 并搜索:
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib{ 00020905-0000-0000-C000-000000000046}\xx
其中 xx 是词库版本
如果你有多个xx,删除那个为空的,应该可以解决!
推荐阅读
- cookies - 当只有主机名存在时,“samesite:strict”如何工作?
- python - TypeError:词形还原nltk中的预期字符串或类似字节的对象
- qt - 可以获取使用 fontSizeMode: Text.Fit 的 QML 标签的实际点大小吗?
- html - SVG 不会向屏幕底部弯曲
- javascript - 进行画布图像像素操作的步骤是什么?
- asp.net-core - API Gateway Http 与 Aspnet Core Web Api 的集成
- javascript - 用 2 个最低的 innerText 值更改 div 的 bg 颜色(值是随机创建的)
- firebase - 在flutter中创建与用户关联的集合
- python - 使用 python 计算 EMA
- python - 如何授予不和谐机器人所有者的权限?