无法将为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型

这篇具有很好参考价值的文章主要介绍了无法将为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

报错:
无法将为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型


1.错误原因

  1. 安装了多版本的Office
  2. 安装过WPS后没正常卸载

2. 解决方式

2.1 office多版本问题导致的

以下四个操作基本覆盖常见原因了,可以从2.1.1尝试,每尝试一种,就去试一下看问题解决了没有,如果已经解决了,其他操作就不用试了

2.1.1 操作一:删除多余版本

解决办法(以win7 x64, Office 2007 例)

Win+R打开命令行,输入regedit打开注册表管理器,注册表位置

  • 64bit Office: HKEY_CLASSES_ROOT\WOW6432Node\Interface[00020970-0000-0000-C000-000000000046]\TypeLib
  • 32bit Office:
    HKEY_CLASSES_ROOT \Interface[00020970-0000-0000-C000-000000000046]\TypeLib

以64位为例:

  • HKEY_CLASSES_ROOT\WOW6432Node\Interface\[00020970-0000-0000-C000-000000000046]\TypeLib 中查看信息

  • key:{00020905-0000-0000-C000-000000000046} ,Verison:8.4

    无法将为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型

  • 在HKEY_CLASSES_ROOT\WOW6432Node\TypeLib中,寻找上一步得到的key对应的值,00020905-0000-0000-C000-000000000046,展开并查看信息
    无法将为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型

  • office 2007 对应 8.4,

  • office2010对应 8.5,

  • office2013对应 8.6,

  • office2016、2019对应 8.7

  • 保留想要的office版本对应的目录,其他删掉。

参考:

  • 无法将为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型
  • 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”

2.1.2 操作二:修复当前版本(可选)

参考MSDN社区:无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”

简单来说,这个人卸载了office2013,安装了office2010,出现这个问题。

  • 但是由于是开发阶段,所以有更详细的报错信息,具体为:此操作失败的原因是对IID为“{00020970-0000- 0000-C000-000000000046}“的接口的COM组件调用QueryInterface因以下错误而失败:不支持此接口(异常来自HRESULT:0x80004002(E_NOINTERFACE))。
  • E_NOINTERFACE,No Interface,没有接口。。。
  • 因此他去注册表寻找office2010对应的内容:HKEY_CLASSES_ROOT \ Interface [00020970-0000-0000-C000-000000000046]
  • 没找到,所以使用office2010修复工具进行修复,修好2010的注册表,然后就好了。

2.1.3 其他操作-删除多余注册表(可选)

参考:(转)无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型

在注册表中找到:HKEY_CLASSES_ROOT\TypeLib{00020813-0000-0000-C000-000000000046}\1.6 删除之就可以了。

office 版本 对应的注册号码
office2003 1.5
office2007 1.6
office2010 1.7
office2013 1.8
office2016 1.9
  • 比如,你的电脑同时之前安装过office 2003和office 2007,则会存在1.5和1.6,如果要保留office2003,则需要删除office2007的1.6,保留1.5即可
  • 我的是安装了2007之后又安装了2010,office2010可以用,office2007不可以用;
    • 因为要在office2007版测试,因此卸载掉office2010,发现该注册表项下1.7还在,所以删除掉1.7,office2007版就正常了

一般来说,一个COM对象在提供的时候,通常还会提供一个类型库,在其中定义了COM对象的所有方法名称、参数名称、属性名称等等信息。

  • 我们要做的就是从类型库中取出这些信息。
  • 当然,某些只供C++程序员使用的COM对象没有类型库,而代之以C++的头文件和/或idl文件,对这种情况,一般没有办法在程序中枚举出对象的方法属性:毕竟去找C++头文件不太现实,何况在非开发环境下,根本就没有头文件的说。
  • 在一般情况下,COM对象的TypeLib信息存储在注册表中:在HK_CLASSROOT\CLSID{ClassID}\的注册表项下,有一个名为TypeLib的子项,其中定义了这个COM对象类型库的ID;而在HK_CLASSROOT\TypeLib 注册表项下,列举了系统中所有TypeLib

参考:

  • 1.15. Removing Outdated References to Office from the System Registry

2.1.4 其他操作-修复组件(可选)

遇到一个情况:即便解决了这个无法将为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型问题,但是程序运行依然不是理想状态。

  • 我的情况是,导出pdf时报这个错误,解决后,导出的内容是空白。

此时考虑自己系统是不是缺少一些组件

  • 可以去自己电脑上看Microsoft Visual C++ 2015-XXX Redistributable,看自己的版本是多少,我是win10,最高是Microsoft Visual C++ 2015-2022 Redistributable
    无法将为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型
  • 如果版本不够新,可以去这里下载最新的版本,Microsoft Visual C++ Redistributable latest supported downloads
    无法将为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型

2.2 wps卸载

第一步:取消对word等文件的自动关联(取消注册表关联)

  • 参考wps怎么取消兼容模式
  • 找到WPS配置工具,选择高级,取消所有兼容性勾选和文件关联勾选。如下:
    无法将为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型
    无法将为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型

第二步:手动清理多余注册表

参考自怎么彻底卸载wps文章来源地址https://www.toymoban.com/news/detail-440405.html

  1. win+R运行,在打开框中输入regedit,回车。
  2. 在弹出的注册表编辑器中找到HKEY_CURRENT_USER\Software\Kingsoft文件夹,右键office文件夹,选择删除。在弹出的【确认要删除这个项和所有其子项吗】这个选项中点击是,删除。
  3. 按照上述方法再依次进入HKEY_LOCAL_MACHINE\SOFTWARE\kingsoft,找到这个kingsoft文件夹下的office,右键,删除。
  4. 按win,在弹出的开始菜单中查看一下右上角的管理员用户名,默认为Administrator,笔者的用户名是kentezhang,是在安装系统时设置的。记住这个用户名。
  5. 打开我的电脑,C盘,依次打开Documents and Settings\Administrator\Application Data\Kingsoft\。注意上述Administrator是计算机管理员的用户名,如果你的电脑管理员用户名不是Administrator(如笔者的是kentezhang),需要进入对应的文件夹。找到这个文件夹下的office6文件夹,右键删除。
  6. 进入C盘,依次打开Documents and Settings\All Users\Application Data\Kingsoft,将``office6文件夹删除。
  7. 进入控制面板,卸载程序,选择WPS,鼠标右键,卸载WPS。

到了这里,关于无法将为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# 使用Microsoft.Office.Interop.Word 将WORD转成PDF

        /// summary     /// 测试文件     /// /summary     /// param name=\\\"input\\\"文件名/param     /// returns/returns     [ApiDescriptionSettings(Name = \\\"Getword\\\")]     [HttpGet]     public IActionResult getWord(string wordName)     {         string templatePath = \\\"D:\\\\Template\\\\wordTemplate.docx\\\";         string log = \\\"D:\\\\Templa

    2024年03月21日
    浏览(57)
  • microsoft.office.interop.word 怎样 读取 某个汉字 字体颜色为红色

    SKY[管理]筱傑 @SKY[机器]筱淋 microsoft.office.interop.word 怎样 读取 某个汉字 字体颜色为红色呢? 要读取某个汉字的字体颜色是否为红色,您可以使用Microsoft.Office.Interop.Word来进行操作。以下是一个示例代码,可以帮助您实现该功能: 请注意,您需要替换\\\"your_document_path.docx\\\"为您要

    2024年02月09日
    浏览(50)
  • Asp.net Core使用Microsoft.Office.Interop.Word转换文档

    源代码网络上有很多,但是使用过程中发现问题还是有的,尤其是在文档属性配置不同的时候,出现的问题就是不能转换。在开发端没有问题,但在不同于开发端电脑的配置情况下,会出现意向不到的问题。此处对解决方案进行记录。 using Word = Microsoft.Office.Interop.Word;   pub

    2024年02月05日
    浏览(62)
  • 使用Microsoft.Office.Interop.PowerPoin遥控PPT

    代码下载地址 有问题可联系 1320271314

    2024年02月03日
    浏览(42)
  • C#使用Microsoft.office.interop.PowerPoint生成PPT

    开发的一个系统需要用到自动生成ppt,网上的例子比较少,且有很多还需要csdn币下载,有些下载下来了还不是那么回事,就是个坑。后来考虑了开源组件Apose.Slides和Spire.Presentation,但是这两个都是商业软件,试用版和免费版的只有能生成前10页,还带有水印。Free Spire.Presentat

    2024年02月11日
    浏览(59)
  • c# 使用Microsoft.Office.Interop.Excel 对Excel操作

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 Microsoft.Office.Interop.Excel的读取,保存,内容写入和打印。 提示:以下是本篇文章正文内容,下面案例可供参考     首先于Proj

    2024年02月03日
    浏览(41)
  • C#调用Microsoft.Office.Interop.Excel时的常见操作功能

    using Microsoft.Office.Interop.Excel;//引用Microsoft.Office.Interop.Excel //声明一个Excel Application  Microsoft.Office.Interop.Excel.Application appExcel = new Microsoft.Office.Interop.Excel.Application();                 //声明一个Excel Workbook                 Microsoft.Office.Interop.Excel.Workbook workbookData;            

    2024年02月12日
    浏览(48)
  • C#调用office interop接口打开word、excel、ppt,拦截处理关闭、保存事件

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using WordLib = Microsoft.Office.Interop.Word; using ExcelLib = Microsoft.Office.Interop.Excel; using PptLib = Microsoft.Office.Interop.PowerPoint

    2024年02月07日
    浏览(76)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包