VBnet检查找到的值是否是Word中表的一部分

时间:2017-02-13 14:36:24

标签: vb.net office-interop

我编写了一个脚本来搜索并返回Word文件中的特定值。防爆。该脚本正在查找Word文档中的所有值(使用Interop.Word),其参数为"([)(*)(])"。这很好用。

我的问题是确定找到的每个值是否是Word文件中表的一部分。如果值存在于Word中的表中,则目的是删除找到值的特定行。

是否可以检查找到的值是否是Word中表格的一部分?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以循环表格,将其转换为文字并搜索文字。

考虑到 doc 是您要自动化的Word.Document

For each wtable as Word.Table in doc.Tables

Dim str as string

Str = wtable.ConvertToText(Separator:=vbTab, _
    NestedTables:=False).Text

If str.Contains("search text")
    Msgbox("found")
End if

Next

答案 1 :(得分:0)

将此VBA代码转换为VB.NET应该没有问题:

Sub FindInTables()
    Dim oDocument As Document
    Dim oRange As range

    Set oDocument = Application.ActiveDocument
    Set oRange = oDocument.range

    With oRange.find
        Do While .Execute(FindText:="bla", Forward:=True, MatchWildcards:=True)

            If oRange.Tables.Count > 0 Then
                oRange.Rows.Delete
            End If

            oRange.Collapse wdCollapseEnd
        Loop
    End With
End Sub

基本上,您在要搜索的范围内使用find对象,然后检查找到的范围中的表的数量,以确定它是否在表中。如果是这样,你可以在找到范围的.Rows集合上调用.Delete。