首页 > 解决方案 > 为整个word文档应用pagesetup

问题描述

我有一个包含 120 个部分的 Word 文档。我编写了一个简单的 Do Until 循环来应用 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

标签: vbams-word

解决方案


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

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 次)时,这将阻止 word 花时间重新格式化文档。


推荐阅读