Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当我使用word运行此互操作代码时,System.Runtime.InteropServices.COMException_C#_Vb.net_Office Interop - Fatal编程技术网

C# 当我使用word运行此互操作代码时,System.Runtime.InteropServices.COMException

C# 当我使用word运行此互操作代码时,System.Runtime.InteropServices.COMException,c#,vb.net,office-interop,C#,Vb.net,Office Interop,当我运行此代码以删除word文档中的文本时,它以多个System.Runtime.InteropServices.COMException结尾 Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click If Origcv = "" Then Label10.Text = "Select a CV" Else ' Create applicati

当我运行此代码以删除word文档中的文本时,它以多个System.Runtime.InteropServices.COMException结尾

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    If Origcv = "" Then
        Label10.Text = "Select a CV"
    Else
        ' Create application instance.
        Dim app As Application = New Application

        ' Open specified file.
        Dim doc As Document = app.Documents.Open(Origcv)

        ' Loop through all words.
        Dim count As Integer = doc.Words.Count
        Dim cvw(count) As String
        For i As Integer = 1 To count
            ' Write word to screen.
            Dim text As String = doc.Words(i).Text

            cvw(i) = doc.Words(i).Text
        Next
        ' Quit the application.
        app.Quit()
尽管.count已成功,但所有错误都出现在doc.words(I).text上。我已经安装了word和.net的所有组件,但仍然无法使其正常工作。在出厂重置之前,当我在笔记本电脑上使用相同的代码时,它工作正常,因此我假设我缺少某种组件或设置,interop.word引用被识别,并且在references选项卡上有文件路径。这里的任何帮助都需要快速完成,这实际上是第一个障碍


感谢您的任何帮助

我相信您的问题在于
Dim app As Application=New Application
这种构造总是很危险的。许多名称空间使用
应用程序
——您没有限定符来告诉.NET是哪个应用程序。Documents.Open可以工作的事实也可能是因为命名空间.NET正在引用的还有一个Documents类

如果您完全符合以下条件:

Dim app As Microsoft.Office.Interop.Word.Application = New Microsoft.Office.Interop.Word.Application()
我相信这个问题会解决的

如果是这样,请在为名称空间指定别名的模块顶部放置一个
Imports
,然后使用别名限定单词名称空间中的对象(使内容更短):

然后


我相信你的问题是
Dim app As Application=New Application
这种构造总是很危险的。许多名称空间使用
应用程序
——您没有限定符来告诉.NET是哪个应用程序。Documents.Open可以工作的事实也可能是因为命名空间.NET正在引用的还有一个Documents类

如果您完全符合以下条件:

Dim app As Microsoft.Office.Interop.Word.Application = New Microsoft.Office.Interop.Word.Application()
我相信这个问题会解决的

如果是这样,请在为名称空间指定别名的模块顶部放置一个
Imports
,然后使用别名限定单词名称空间中的对象(使内容更短):

然后


如果没有关于抛出的确切错误的更多信息,就不可能知道问题是什么。将代码放入Try…Catch块并捕获Exception.Message。Office不会在没有Try…Catch的情况下将所有错误消息传递回.NET,这样可能会提供更多有用的信息。另外,还要注意字符串数组:在.NET Framework中,这些数组是从零开始的,并且从1开始(这对于doc.Words是正确的,但对于.NET数组则不是)。在最后一个循环中,下标将超出范围。错误HRESULT E_FAIL已从对COM组件的调用返回。我已尝试重新添加引用-我现在还添加了可能与访问word功能有关的任何引用,我已安装了用于与word互操作的PIA。重新安装具有所有功能的word,我不能保证word文档将没有制表符,因为我无法控制它们的创建-但我自己的测试文档根本没有制表符,我认为这不是问题所在。我尝试将目标框架更改为net 2.0,但返回相同的错误。如果没有关于抛出的确切错误的更多信息,则无法知道问题是什么。将代码放入Try…Catch块并捕获Exception.Message。Office不会在没有Try…Catch的情况下将所有错误消息传递回.NET,这样可能会提供更多有用的信息。另外,还要注意字符串数组:在.NET Framework中,这些数组是从零开始的,并且从1开始(这对于doc.Words是正确的,但对于.NET数组则不是)。在最后一个循环中,下标将超出范围。错误HRESULT E_FAIL已从对COM组件的调用返回。我已尝试重新添加引用-我现在还添加了可能与访问word功能有关的任何引用,我已安装了用于与word互操作的PIA。重新安装具有所有功能的word,我不能保证word文档将没有制表符,因为我无法控制它们的创建-但我自己的测试文档根本没有制表符,我认为这不是问题所在。我已尝试将目标框架更改为net 2.0,但返回了相同的错误。不幸的是,仍然“调用COM组件时返回了错误HRESULT E_FAIL”,我开始认为这是因为我缺少redist或权限正在阻止它。所有互操作功能都列在“错误”下拉列表中。我不知道为什么它以前能工作,现在不行了,我唯一能想到的是我使用的是另一个版本的visual studio。只是一个想法,但这可能是因为我只是把我的项目目录拖到了备份驱动器上,然后在工厂重置时将它复制回来。我将尝试创建一个新项目并重新执行。刚创建了一个新项目,在运行此代码时也会出现同样的问题。我认为实际系统一定出了问题。您可以尝试修复Office和Visual Studio。不幸的是,调用COM组件时仍然返回了“错误HRESULT E_FAIL”。我开始认为这是因为我缺少redist或权限正在阻止它。所有互操作功能都列在“错误”下拉列表中。我不知道为什么它以前能工作,现在不行了,我唯一能想到的是我使用的是另一个版本的visual studio。只是一个想法,但这可能是因为我只是把我的项目目录拖到了备份驱动器上,然后在工厂重置时将它复制回来。我将尝试创建一个新项目并重新执行。刚创建了一个新项目,在运行此代码时也会出现同样的问题。我想一定是实际系统出了问题。你们可以试着修复Office和Visual Studio。
Dim app as Word.Application = New Word.Application()
Dim doc as Word.Document = app.Documents.Open(Origcv)