在Word中,删除不包含某些文本的表行或将这些行复制到新文件

时间:2011-06-18 19:24:46

标签: vba ms-office word-vba

我会因为我对visual basic的有限知识而提前道歉,但我正在尝试编写一个宏来搜索某个字符串的相当大的表,然后删除不包含该字符串的行或将包含它的所有行复制到新的Word文档。只是一种隔离包含该字符串的行的方法。

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您已经知道如何将光标放在要迭代的列的顶部单元格中,那么这里是您要放置的代码,以便在单元格文本为空时删除整行。

请根据您的情况对代码进行必要的修改

Selection.MoveEnd  'This ensures that you select the content of the cell to read
If InStr(Selection.Text, Chr(7)) Then   'if you select the whole cell it will contain
                                        'character 7 (TAB) so you will also select 
                                        '2 additional invisible characters as well 
    If Trim(Mid(Selection.Text, 1, Len(Selection.Text) - 2)) = "" Then
             Selection.Rows.Delete
    End If
Else
 ' you selected part of the text that does not contain invisible characters 
    If Trim(Mid(Selection.Text, 1, 1)) = "" Then
         Selection.Rows.Delete
    End If
End If

答案 1 :(得分:1)

从另一个论坛找到解决方案。以为我会在这里发帖,以防它帮助其他人:

With ThisDocument.Tables(1)
    For r = .Rows.Count To 1 Step -1
        fnd = False
        For Each c In .Rows(r).Cells
            If InStr(c.Range.Text, "x") > 0 Then fnd = True
        Next
        If Not fnd Then .Rows(r).Delete
    Next
End With

其中“x”是要搜索的文本。

我还需要一个宏来搜索某个文本字符串并删除该行,这可以通过从上面的脚本中删除“not”来完成。尽管如此,脚本确实需要一段时间才能运行(在大约250行的表格上),所以起初我认为Word已经锁定,以防运行此脚本的人注意到类似的行为并且担心。此外,我正在搜索全文大写的文本字符串,除非搜索字符串(“x”)也在大写字母中,否则脚本无法识别它。

此外,我发现这个宏不起作用,除非它被复制到需要运行的word文档中。将ThisDocument更改为ActiveDocument允许它仅在Normal模板中工作。

无论如何,希望能帮助别人!