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