如何用vba在word文档的每页结尾插入分节、分页符?

用vba在word文档中插入分隔符,可以使用Range或者Selection对象的InsertBreak方法。

定位word的每页可以使用Document、Range、Selection对象的GoTo方法。

由于GoTo方法将返回一个Range对象,该对象表示定位的对象的起始位置。

基于以上的知识,用vba在word文档的每页结尾插入分页符、分节符,可以采用以下的算法

从最后一页开始遍历到第二页,每次返回的是当前页的开始位置,然后在开始位置插入分隔符即变成了在上一页的结尾插入分隔符。

实现代码如下:

以下代码可以在word文档的每页结尾插入一个不分页的分节符

Sub QQ1722187970()
    Const wdPageBreak = 7
    Const wdSectionBreakContinuous = 3
    Const wdSectionBreakNextPage = 2
    Const wdGoToPage = 1
    Const wdGoToAbsolute = 1
    Dim oDoc As Document
    Dim oRng As Range
    Set oDoc = Word.ActiveDocument
    Dim iPageNo As Long
    '获取总页数
    With oDoc
    iPageNo = .Range.Information(wdNumberOfPagesInDocument)
        For i = iPageNo To 2 Step -1
            '定位到页开始
            Set oRng = .GoTo(wdGoToPage, Which:=wdGoToAbsolute, Count:=i)
            Debug.Print oRng.Start, oRng.End
            '插入不换页分节符
            oRng.InsertBreak wdSectionBreakContinuous
        Next i
    End With
End Sub

如果要每间隔一页插入一个空白页,可以使用如下的代码:

Sub QQ1722187970()
    Const wdPageBreak = 7
    Const wdSectionBreakContinuous = 3
    Const wdSectionBreakNextPage = 2
    Const wdGoToPage = 1
    Const wdGoToAbsolute = 1
    Dim oDoc As Document
    Dim oRng As Range
    Set oDoc = Word.ActiveDocument
    Dim iPageNo As Long
    '获取总页数
    With oDoc
    iPageNo = .Range.Information(wdNumberOfPagesInDocument)
        For i = iPageNo To 2 Step -1
            '定位到页开始
            Set oRng = .GoTo(wdGoToPage, Which:=wdGoToAbsolute, Count:=i)
            Debug.Print oRng.Start, oRng.End
            '插入分页符
            oRng.InsertBreak wdPageBreak
        Next i
    End With
End Sub
       

发表评论