Microsoft Word 2007 VBA - 查找表后面的段落?

时间:2013-10-11 23:08:53

标签: ms-word word-vba office-2007

我在Microsoft Word 2007中有一个VBA宏,它使用特定的背景阴影颜色查找文档中的所有表,然后删除该表。那部分工作正常。

但是,除了需要删除表之外,我还需要删除它后面的段落。总是遵循的段落是“宏文本”样式,其中没有文本。它只是为了“拆开桌子”而不是将它们组合成一个大桌子。

我该怎么做?以下是我删除表格的代码:

For Each aTable In ActiveDocument.Tables
    If aTable.Rows(1).Cells(2).Shading.BackgroundPatternColor = wdColorGray15 Then
        aTable.Delete
    End If
Next aTable

2 个答案:

答案 0 :(得分:1)

最简单的我认为你需要这样的东西。您可能需要扩展范围以包括整个段落,检查样式​​名称等。

Dim aTable As Word.Table
Dim rng As Word.Range
For Each aTable In ActiveDocument.Tables
If aTable.Rows(1).Cells(2).Shading.BackgroundPatternColor = wdColorGray15 Then
  Set rng = aTable.Range
  rng.Move unit:=wdParagraph, Count:=1
  aTable.Delete
  rng.Delete
  Set rng = Nothing
End If
Next aTable

答案 1 :(得分:1)

感谢bibadia!你救了我! 正确答案(用于在所有表中的两个列表的任一列中查找灰色文本,然后删除这些表):

Dim aTable As Word.Table
Dim rng As Word.Range
For Each aTable In ActiveDocument.Tables
If aTable.Shading.BackgroundPatternColor = wdColorGray15 Then
    Set rng = aTable.Range
    rng.Move unit:=wdParagraph, Count:=1
    aTable.Delete
    rng.Delete
    Set rng = Nothing
Else
    If aTable.Rows(1).Cells(2).Shading.BackgroundPatternColor = wdColorGray15 Then
        Set rng = aTable.Range
        rng.Move unit:=wdParagraph, Count:=1
        aTable.Delete
        rng.Delete
        Set rng = Nothing
    End If
End If
Next aTable