vb.net操作word最后一步求解

If e.KeyCode = Keys.Enter Then
Dim q As Integer = InputBox("请输入搜索页码的次数")
If q > 0 Then
Static Dim p(q) As String
Dim j As Integer
For j = 0 To q - 1
p(j) = InputBox("请输入关键字")
Next
Dim temp
If p(j) = p(q) Then
For j = 0 To q - 1
If p(j) > p(j + 1) Then
temp = p(j)
p(j) = p(j + 1)
p(j + 1) = temp

End If
Next

End If

For j = 0 To q - 1
Dim WDAPP As Object
WDAPP = New Word.Application
WDAPP.visible = True

WDAPP.Documents.open(FileName:=TextBox1.Text)

WDAPP.Selection.Find.ClearFormatting()
With WDAPP.Selection.Find.text = p(j)
WDAPP.Selection.Find.Execute(p(j))
Dim i As String
i = WDAPP.Selection.Information(3)

Dim WDAPP1 As Object
WDAPP1 = New Word.Application
WDAPP1.visible = True

WDAPP1.documents.open(FileName:=TextBox2.Text)
Dim missing = System.Reflection.Missing.Value
Dim unit = Word.WdUnits.wdStory
WDAPP1.Selection.EndKey(unit, missing)
WDAPP1.Selection.TypeText(text:=p(j))
WDAPP1.Selection.MoveDown(Unit:=4, Count:=1)
WDAPP.Documents.Close(Word.WdSaveOptions.wdDoNotSaveChanges)
WDAPP1.Selection.EndKey()

WDAPP1.Selection.ParagraphFormat.TabStops.Add(Position:=WDAPP1.CentimetersToPoints(20), Alignment:=2, Leader:=2)

WDAPP1.Selection.TypeText(Text:=vbTab)

WDAPP1.Selection.TypeText(Text:=i)

WDAPP1.Selection.TypeText(Text:=vbCrLf)
If WDAPP1.ActiveDocument.Saved = False Then

WDAPP1.ActiveDocument.Save()
End If
WDAPP.Quit()
WDAPP1.Quit()
WDAPP = Nothing
WDAPP1 = Nothing

End With
Next

End If

End If
报错这句 WDAPP1.Selection.TypeText(text:=p(j))
“System.Runtime.InteropServices.COMException”类型的未经处理的异常在 Microsoft.VisualBasic.dll 中发生

其他信息: 类型不匹配。 (异常来自 HRESULT:0x80020005 (DISP_E_TYPEMISMATCH))
说是调用的目标发生了异常
我查资料说是这个错误是因为要调用com里的东西。但始终不知道应该加什么
这段代码的功能是循环查询在textbox1的关键字所在页码,然后输出在textbox2中输出关键字所在页码

我试着按我自己的思路给你改一下,你看看成不成型!

......
End if

Dim WDAPP As Object,Wd1 as object,Wd2 as object
wdapp = new word.application
wdapp.visible = true
wd1 = WDAPP.Documents.open(FileName:=TextBox1.Text)
wd2 = WDAPP.Documents.open(FileName:=TextBox2.Text)
For j = 0 To q - 1
    Wd1.activate
    WDAPP.Selection.Find.ClearFormatting()
                With WDAPP.Selection.Find.text = p(j)
                    WDAPP.Selection.Find.Execute(p(j))
                    Dim i As String
                    i = WDAPP.Selection.Information(3)


                    Dim missing = System.Reflection.Missing.Value
                    Dim unit = Word.WdUnits.wdStory
                    wd2.Activate
                    WDAPP.Selection.EndKey(unit, missing)
                    WDAPP.Selection.TypeText(text:=p(j))
                    WDAPP.Selection.MoveDown(Unit:=4, Count:=1)
                    WDAPP.Selection.EndKey()

                    WDAPP.Selection.ParagraphFormat.TabStops.Add(Position:=WDAPP1.CentimetersToPoints(20), Alignment:=2, Leader:=2)

                    WDAPP.Selection.TypeText(Text:=vbTab)

                    WDAPP.Selection.TypeText(Text:=i)

                    WDAPP.Selection.TypeText(Text:=vbCrLf)
                    If WDAPP.ActiveDocument.Saved = False Then

WDAPP.ActiveDocument.Save()
                    End If

                End With
            Next
            WDAPP.Quit()
            WDAPP = Nothing
        End If
End If

温馨提示:内容为网友见解,仅供参考
无其他回答

vb.net 操作word时,如果已经选中了一段文字,如何取消 选择,并将鼠标定 ...
selection.start=activedocument.characters.count selection.end=activedocument.characters.count

VB.net 操作Word卡的问题。
我有一个很笨的方法,就是写另外一支程式,当前程式作为主程式显示在桌面,要处理WORD时,由当前的主程式呼叫另外一个程式处理WORD,在处理完后,将处理结果返回主程式,主程式在现实处理结果。

...文档操作】教程(六):在 C#、VB.NET 中计算文档中的单词数、更改...
[C#][VB.NET]接下来,如果你想更改文档的语言词典,例如从默认的英语切换到秘鲁西班牙语,可以按照以下步骤操作:新建一个 Word 文档,创建 Section 和 Paragraph。 添加一个 TextRange,并添加秘鲁西班牙语单词,指定LocaleIdASCII为10250以更改语言。 最后,保存文档并查看更改后的效果。以上操作展示了...

...操作】教程(三):在 C#、VB.NET 中编辑 Word 文档
vbnetImports Spire.DocDim doc As New Document()Dim para1 As New Paragraph()para1.Text = "更新标题的示例"doc.Add(para1)Dim para2 As New Paragraph()para2.Text = "在第二段添加新文本:"doc.Add(para2)' 为新文本添加格式Dim range As New TextRange(doc.Content(1))range.Charac...

如何用VB编写破译Word密码的程序?
打开VB,新建一个VB工程,取名Proc_Word,将启动窗体命名为FrmMain,选择“工程”菜单中的“引用”,在“引用”对话框中选择 “Microsoft Word8.0 Object Library”(这一步很重要,你必须选择这一ActiveX部件,否则代码不能正确运行,顺便说一句,如果安装的是Office2000,那么应该选择“Microsoft Word9.0...

Word处理控件Aspose.Words功能演示:使用 C# VB.NET 将 DOCX 转换为 D...
将 DOC 转换为 DOCX 文件在基于 .NET Framework 的应用程序中,使用 C# 或 VB.NET 将 Microsoft Word DOC 文件转换为 DOCX 格式。以下是执行转换的步骤:下面的代码示例展示了如何使用 C# 或 VB.NET 将 DOC 转换为 DOCX 文件。批量转换 DOC 为 DOCX 文件处理多个文件和不同批次的 DOC 到 DOCX ...

Word控件Spire.Doc 【文档操作】教程(二):在 C#、VB.NET 中打开...
在.NET环境下,通过Spire.Doc组件可以实现Word文档的操作。具体而言,打开Word文档的方法包括初始化现有文档实例、加载文档文件、以只读模式加载文档以及从流中加载文档。使用Spire.Doc for .NET,通过Document(String)构造函数可以轻松初始化一个新实例,该实例对应于指定的现有Word文档。同时,Document....

...教程(4):在 Word 中插入或删除脚注-C#\/VB.NET
在C#或VB.NET中,使用Paragraph.AppendFootnote方法插入脚注,只需指定需要注释的段落。对于文本后插入脚注,同样有相应的API支持。删除Word文档中的脚注,Spire.Doc提供了编程方式,通过搜索并逐一删除,效率更高。以下是C#和VB.NET的具体操作步骤。以上是关于在Word文档中插入和删除脚注的C#和VB.NET教程。

vb.net中,我想程序监测另一个程序是否被关闭。
Dim p As New Processp.StartInfo="d:\\test.docx"p.Startp.WaitForExit() '等待程序结束Msgbox("文档已经关闭")如果是单线程程序,在文档关闭前就会一直卡住,所以要用多线程处理。

...文档操作】教程(七):在 C#、VB.NET 中从 URL 下载 Word 文档_百...
以下是实现这一功能的步骤:第 1 步:创建一个新的 Word 文档对象。第 2 步:创建一个 WebClient 类的新实例。第 3 步:使用 WebClient 的 DownloadData 方法从指定 URL 下载数据,并将其保存到 MemoryStream 中。接着,使用 Document 的 LoadFromStream 方法从 MemoryStream 加载 Word 文档。第 4...

相似回答