Word支持多种分节符,如图一,其中两种分节符会在必要时自动插入空白页。例如,如果文档中插入了一个“奇数页”分节符,而上一节又在奇数页结束,则Word会自动插入一个空白的偶数页,使得下一节又属于一个新的奇数页。
但通过这两种分节符自动插入的空白页都存在同样的缺点――它插入的是一个完全空白的页,连页眉/页脚都自作主张地省略了。在实际应用中,自动生成的空白页如果也有普通拥有的页眉/页脚,或者包含“(本页空白)”之类的文字,整个文档看起来就更规范一些。但这些问题单纯依靠Word的分节符来自动插入空白页是无法解决的。
图一
解决这个问题办法很多。第一种办法最简单,但比较繁琐,属于“笨办法”,针对只需加入页眉/页脚的空白页:人工检视文档,在必要的地方(也即空白页)插入一些不可见的文本。所谓不可见的文本,就是将普通文本的颜色设置成和底色一样,一般是白色。这样,打印时空白页上不会看到这些文本,不过Word不会考虑到这一点,仍会象对待正常页那样在这个“空白”页上打印页眉/页脚。
如果要加入“(本页空白)”之类的文字,一种比较好的办法是利用域构造标准的“节终结文本”。
首先创建一个AutoText自动图文集,使它包含要打印在空白页上的文字,并在自动图文集的开始位置插入一个分页符。为该自动图文集词条指定适当的名称,例如BLANKPAGE。接下来,在每一个节的终结处,紧靠分节符之前,加入下面的复合域(如图二):{ if { =int( {page} / 2 ) * 2 } = { page } " " { autotext "BLANKPAGE" } }。
这组域代码判断当前的页号是奇数还是偶数,根据判断结果决定是否插入名为BLANKPAGE的自动图文集词条。
图二
注意域代码中的花括号(“{”和“}”)是域的标记,不能用输入普通文字的方法输入,每一对花括号必须按一次Ctrl+F9输入。
如果你经常要执行类似的操作,那么最好的办法还是利用Word宏。下面的CheckSecPages宏遍历当前文档,对于文档的每一节,计算该节包含的页数,然后判断页数的奇偶性,必要时插入分页符。
Sub CheckSecPages()
Dim iSec As Integer
Dim oRng As Range
Dim iValue As Integer
With ActiveDocument
' 依次处理文档的每一节(最后一节除外)
For iSec = 1 To .Sections.Count - 1
' 创建区域(Range)对象
Set oRng = .Sections(iSec).Range
' 将该区域折叠
' (折叠之后起始位置和结束位置相同)
oRng.Collapse wdCollapseStart
' 插入一个SectionPages域。
' SectionPages域表示一节中的总页数
.Fields.Add Range:=oRng, Type:=wdFieldSectionPages
' 将SectionPages的值除以2。如果余数为0,则当前节的页数是
' 偶数――这就是我们要用“奇数页”分节符达到的效果
If (.Sections(iSec).Range.Fields(1).Result Mod 2) <> 0 Then
' 如果页数是奇数,则在节的分节符之前
' 插入一个分页符
Set oRng = .Sections(iSec).Range
With oRng
.Collapse Direction:=wdCollapseEnd
.MoveEnd unit:=wdCharacter, Count:=-1
.InsertBreak Type:=wdPageBreak
End With
End If
' 删除前面创建的SectionPages域
.Sections(iSec).Range.Fields(1).Delete
Next iSec
End With
End Sub
在Word中,按Alt+F11打开Visual Basic宏编辑器,输入CheckSecPages宏的完整代码,如图三。完成后保存,关闭宏编辑器返回Word。以后,只要运行CheckSecPages宏就可以自动设置空白页,非常方便。
图三