我有一个 Word 文档,其结构大致如下:
Title
Heading 1
Heading 2
Text
Heading 2
Text
Heading 1
Heading 2
Text
...
我希望在所有 H2 标题前设置分页符,除了那些直接位于 H1 标题之后的标题,但我希望这两个标题位于同一页面上。
我知道我可以在标题 2 的样式中自动设置“分页符”,但有没有什么方法可以设置“标题 1 之后直接除外”选项,而不必手动添加所有分页符?
换句话说,我希望休息如下:
Title
-- Page Break --
Heading 1
Heading 2
Text
-- Page Break --
Heading 2
Text
-- Page Break --
Heading 1
Heading 2
Text
-- Page Break --
Heading 2
Text
...
答案1
创建新的样式将实现您的目标。请尝试以下步骤:
- 使用段落对话框在所有内容之前插入
Word
分页符标题 2文本。 - 创造新风格,“标题 2 首字母”,这就像标题 2,但取消选中“分页符在此之前”选项。请确保拼写正确“标题 2 首字母”正如这里所写的。
- 按Alt+F11打开
VBA development environment
,然后点击“插入 > 模块”打开一个新窗口来输入程序。 - 将以下语句粘贴到窗口中。这些语句将替换所有标题 2之后的段落标题 1段落,标题 2 主样式。
粘贴代码:
'''''''''''''''''''''''''''''''''''''''''''
Sub replace_Heading2_with_Heading2Prime()
Dim i As Integer
Dim s As String
Dim h As String
'''''''''''''''''''''''''''''''''''''
'loop through all pgp and report heading 2
For i = 1 To ActiveDocument.Paragraphs.Count
s = ActiveDocument.Paragraphs(i).Style
If (s = "Heading 2") Then
h = findPriorHeading(i - 1)
If (h = "Heading 1") Then
ActiveDocument.Paragraphs(i).Style = "Heading 2 Prime"
End If
End If
Next i
Exit Sub
End Sub
Function findPriorHeading(iPgp As Integer) As Variant
Dim i As Integer
Dim blnFoundHeading As Boolean
'walk backwards until any heading is found
With ActiveDocument
i = iPgp
blnFoundHeading = False
Do Until (i < 1 Or blnFoundHeading)
s = .Paragraphs(i).Style
If (InStr(s, "Heading") > 0) Then
blnFoundHeading = True
findPriorHeading = s
Exit Function
End If
i = i - 1
Loop
End With
findPriorHeading = ""
End Function
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
按Alt+F11返回Word
,然后按Alt+F8打开宏对话框。双击“将标题 2 替换为标题 2Prime”运行宏的项目。
我希望这有帮助。