System.Runtime.InteropServices.COMException当我用word运行这个Interop代码时

时间:2016-04-29 07:07:26

标签: 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 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引用被识别并且在引用上有文件路径标签。这里的任何帮助都需要快速完成,这实际上是第一个障碍。

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:2)

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

如果您完全符合条件:

Dim app As Microsoft.Office.Interop.Word.Application = New Microsoft.Office.Interop.Word.Application()

我相信这个问题会消失。

如果是,请将Imports放在模块的顶部,为命名空间分配别名,然后使用Alias限定Word命名空间中的对象(缩短时间):

Imports Word = Microsoft.Office.Interop.Word

然后

Dim app as Word.Application = New Word.Application()
Dim doc as Word.Document = app.Documents.Open(Origcv)