如何理解Visual Studio中从VB代码中自动生成Word时的强制转换异常



我正在德国Visual Studio 2019中开发一个表单应用程序,该应用程序应使用VB自动执行Word。在我的VB项目中,我添加了对Microsoft.Office.Interop.Word.dll的引用,并可以编译该应用程序。为了调试VS中的应用程序,我使用以下代码:

Dim oWord As Microsoft.Office.Interop.Word.Application
oWord = CreateObject("Word.Application")
oWord.Visible = True

这个琐碎的代码应该实例化并显示Word。但是,我得到的异常是Microsoft.Office.Interop.Word.ApplicationClass不能在Microsoft.Office.Iterop.Word_Application 中强制转换

System.InvalidCastException: Das COM-Objekt des Typs "Microsoft.Office.Interop.Word.ApplicationClass" kann nicht in den Schnittstellentyp "Microsoft.Office.Interop.Word._Application" umgewandelt werden. Dieser Vorgang konnte nicht durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente für die Schnittstelle mit der IID "{00020970-0000-0000-C000-000000000046}" aufgrund des folgenden Fehlers nicht durchgeführt werden konnte: Fehler beim Laden der Typbibliothek/DLL. (Ausnahme von HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY))

据我所知,原因还不太清楚。一些人认为原因是安装了几个Word版本,导致版本不兼容和出现异常。为了解决这个问题,他们建议删除Windows寄存器中的双{00020970-0000-0000-C000-000000000046}项。我试过了,但问题仍然存在。

我该如何解决这个问题,或者有人在VB(VB#或VC++(中有类似的示例自动化项目我可以尝试吗?

在文件顶部。。。

Imports Microsoft.Office.Interop

然后使用调用构造函数的New关键字创建对象。

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim oWord As New Word.Application
oWord.Visible = True
End Sub

此异常的原因是Windows注册表已损坏。

最新更新