我们热爱生命科学!-生物行

Word自动空白页设置技巧

时间:2006-01-08 15:32来源:不详 作者:bioguider 点击: 306次
    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

(责任编辑:泉水)
顶一下
(13)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片