Vba 对整个word文档应用页面设置

Vba 对整个word文档应用页面设置,vba,ms-word,Vba,Ms Word,我有一个包含120个部分的Word文档。我编写了一个简单的Do-Until循环来应用页面设置,如代码所示。循环通过所有部分只需2分钟多一点,这太长了。有没有更快的办法解决这个问题 Dim oSecRange As Word.Range Dim iSecCounter As Long iSecCounter = 0 Do Set oSecRange = oDoc.Sections(iSecCounter + 1).Range Application.StatusBar = "Adj

我有一个包含120个部分的Word文档。我编写了一个简单的Do-Until循环来应用页面设置,如代码所示。循环通过所有部分只需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

如果你需要所有的页面都是相同的,你不必考虑定位,那么下面的代码就可以完成任务。

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.ScreenUpdate=false/true)这将停止word在每次更改页面格式参数时花时间重新格式化您的文档(例如,原始代码中每个部分5次重新格式化)。

是否有效?这个代码有什么问题?它可以工作。我认为在所有路段上循环花费的时间太长(120个路段需要2分钟)。不知道是否有其他方法对此进行编码。扫描文档以确保每个部分都链接到上一部分。然后,您只需执行一次页面设置。尝试注释状态栏更新,并在开始处添加
Application.screenUpdate=False
。这有什么区别吗?并在oDoc.Sections中的每一秒使用
进行测试,而不是使用
Do
-循环。理论上,可以使用
oDoc.PageSetup…
而不是单独处理每个部分,但当文档较大时,这可能会导致问题,但您可以尝试…@Freeflow链接到上一页仅用于页眉和页脚内容。它与边距设置无关。我收到运行时错误“5941”:请求的集合成员在第…行storyranges.pagesetup中不存在。我在excel中运行这个,我将所有内容都链接到word对象。我不知道我错过了什么。因为我老了,我的手指不总是做我认为他们做过的事。将“wdCommentsStory”替换为“wdMainTextStory”谢谢。现在我得到一个4608错误:在.headerDistance行中的值超出范围。这与我在执行activedocument.pagesetup时遇到的错误相同。上面的代码运行正常吗?是的。您的错误可能意味着作为默认打印机安装的打印机不支持您设置的页边距大小。