2016-05-13 294 views
0

試圖編寫一個函數來刪除Word文檔中的空白頁。沒有被刪除。我很感激,如果有人可以看看。用VBA刪除Word文檔中的空白頁

Public Function DeleteBlankPages(wd As Word.Document, wdApp As Word.Application) 
    Dim par As Paragraph 
    For Each par In wd.Paragraphs 
     If IsEmpty(par.Range.Text) Then 
      par.Range.Select 
      wdApp.Selection.Delete 
     End If 
    Next par  
End Function 
+0

您是否嘗試過通過線與調試行執行呢? – litelite

回答

1

在VBA語言參考中查找IsEmpty的定義。它不符合你的想象。

找出是否有文本內容的正確方法是檢查字符數。在VBA中,這通常通過功能Len(=長度)完成。你可能會認爲它的比較應該是0(零),但段落不是這種情況,因爲Word段落總是包含它的段落標記(ANSI 13)。

而且,無需以刪除選擇段落或範圍,只需直接使用Delete方法上par.Range。 (這意味着你也不需要通過Word.Application對象。

另外請注意,您的代碼不會做任何頁面,只有幾段......這可能刪除空白頁,這取決於事情如何是格式化的,但它可能是明智的重命名功能和評論它是如何工作的

因此,更多的是這樣的:

Public Function DeleteBlankPages(wd As Word.Document) 
    Dim par As Paragraph 
    For Each par In wd.Paragraphs 
     If Len(par.Range.Text) <= 1 Then 
      par.Range.Delete 
     End If 
    Next par  
End Function