2013-10-11 172 views
1

我在Microsoft Word 2007中有一個VBA宏,它在我的文檔中找到具有特定背景陰影顏色的所有表格,然後刪除該表格。這部分工作正常。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 

回答

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 
+0

太棒了!這工作...雖然我導致你「有點」誤入歧途,因爲aTable.Rows(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 
相關問題