vba - 为整个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
解决方案
如果您需要所有页面都相同并且您不必考虑方向,那么下面的代码将完成这项工作。
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 花时间重新格式化文档。
推荐阅读
- python-3.x - 加入两个字典并按不同键对它们进行分组并总结值的最有效方法
- javascript - 为什么 js 文件在我的烧瓶应用程序中不起作用?
- python - 如何在 Django 模型中创建一个字段,将特定字符串连接到每个记录的 id?
- php - Laravel:尝试获取 PDF 时出现 DOMPDF 错误
- filter - safari 14 图像-webkit-filter 不起作用
- python - 更改主题时如何为浮士德设计升级路径=
- mysql - 春季用户'user_name@'localhost'(使用密码:NO)的访问被拒绝
- python - Python - 程序结束时将数据保存在文件中
- pandas - 如果时间频率大于某个值,则创建一个新列
- mysql - 如何使用 CROSS JOIN 显示总数的百分比?