试图编写一个功能来删除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
Run Code Online (Sandbox Code Playgroud)
IsEmpty在VBA语言参考中查找的定义。它并没有实现您的想象。
找出文本内容的正确方法是检查字符数。在VBA中,通常使用函数Len(= length)完成此操作。您可能会认为比较应该为0(零),但是段落不是这种情况,因为Word段落总是包含其段落标记(ANSI 13)。
另外,无需选择段落或范围即可将其删除,只需Delete直接在上使用方法即可par.Range。(这意味着您也不需要传递Word.Application对象。
另请注意,您的代码不会做任何页面,只有几段......它可能 deleted empty pages, depending on how things are formatted, but it might be wise to rename the Function and comment how it's supposed to work.
所以更像这样:
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
Run Code Online (Sandbox Code Playgroud)