将页面设置应用于整个Word文档

时间:2019-11-12 20:40:59

标签: vba ms-word

我有一个包含120个部分的Word文档。我编写了一个简单的直到代码循环,以应用pagesetup,如代码所示。遍历所有部分只需要2分钟多的时间,太长了。有没有更快的方法来解决这个问题?

Dim oSecRange As Word.Range
Dim iSecCounter As Long
iSecCounter = 0
Do
    Set oSecRange = oDoc.Sections(iSecCounter + 1).Range
    Application.StatusBar = "Adjusting HEADER & FOOTER distance & Page Margins - " & 
    Application.Round((iSecCounter / oDoc.Sections.Count) * 100, 0) & "% Completed."
    oSecRange.PageSetup.HeaderDistance = Application.InchesToPoints(0.25)
    oSecRange.PageSetup.FooterDistance = Application.InchesToPoints(0.25)
    oSecRange.PageSetup.LeftMargin = Application.InchesToPoints(0.75)
    oSecRange.PageSetup.RightMargin = Application.InchesToPoints(0.75)
    oSecRange.PageSetup.TopMargin = Application.InchesToPoints(0.25)
    iSecCounter = iSecCounter + 1
Loop Until iSecCounter = oDoc.Sections.Count

1 个答案:

答案 0 :(得分:0)

如果您需要所有页面都相同并且不必考虑方向,那么下面的代码即可完成工作。

With ActiveDocument.StoryRanges(wdCommentsStory).PageSetup

    .HeaderDistance = Application.InchesToPoints(0.25)
    .FooterDistance = Application.InchesToPoints(0.25)
    .LeftMargin = Application.InchesToPoints(0.75)
    .RightMargin = Application.InchesToPoints(0.75)
    .TopMargin = Application.InchesToPoints(0.25)
    '.BottomMargin= Application.InchesToPoints(0.25) ?

End With

如果您有不同的页面要求并且也有不同的方向,则可能需要逐节进行操作。在这种情况下,请在开始之前关闭屏幕更新,然后在完成后将其打开。 (Application.ScreenUpdating = false / true)每次您更改页面格式参数(例如,原始代码中的每个部分5个重新格式化)时,这都会花很多时间来重新格式化您的文档。