使用VBA删除Word Doc中的空白页

时间:2016-05-13 21:08:07

标签: vba ms-word

尝试编写一个函数来删除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

1 个答案:

答案 0 :(得分:4)

在VBA语言参考中查找IsEmpty的定义。它没有做你想象的那样。

找出是否有文字内容的正确方法是检查字符数。在VBA中,这通常使用函数Len(= length)来完成。您认为比较应为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