MicrosoftWord2007VBA-找到紧跟在表格后面的段落吗?

MicrosoftWord2007VBA-找到紧跟在表格后面的段落吗?,vba,ms-word,office-2007,Vba,Ms Word,Office 2007,我在MicrosoftWord2007中有一个VBA宏,它可以查找文档中具有特定背景阴影颜色的所有表,然后删除该表。那部分很好用 但是,除了需要删除表之外,我还需要删除它后面的段落。始终紧跟其后的段落是“宏文本”样式,其中没有文本。它只是将桌子彼此“分开”,这样它们就不会合并成一张大桌子 我该怎么做?以下是我删除表的代码: For Each aTable In ActiveDocument.Tables If aTable.Rows(1).Cells(2).Shading.Backgro

我在MicrosoftWord2007中有一个VBA宏,它可以查找文档中具有特定背景阴影颜色的所有表,然后删除该表。那部分很好用

但是,除了需要删除表之外,我还需要删除它后面的段落。始终紧跟其后的段落是“宏文本”样式,其中没有文本。它只是将桌子彼此“分开”,这样它们就不会合并成一张大桌子

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

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

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

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

谢谢你,比巴迪亚!你救了我! 回答正确(用于在所有表格的两列表格的任一列中查找灰色文本,然后删除这些表格):


令人惊叹的!这很有效。。。虽然我在那一行中“有点”误导了你。。。第一次检测到东西不工作(无论什么原因)。我通常需要检查表格中的灰色,然后检查第二个单元格中的灰色(以涵盖我的两种情况-在表格的任一列中查找灰色)。因此,正确的代码(此处适用于可能使用此解决方案的其他人):
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