Word 2010 - H2 之前的分页符,H1 之后除外

8 microsoft-word microsoft-word-2010

我有一个或多或少具有以下结构的word文档:

Title
Heading 1
  Heading 2
    Text
  Heading 2
    Text
Heading 1
  Heading 2
    Text
...
Run Code Online (Sandbox Code Playgroud)

我希望在所有 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
...
Run Code Online (Sandbox Code Playgroud)

小智 2

创建新的风格将实现你想要的。尝试这个过程:

  1. 使用段落对话框在所有标题 2文本之前插入Word分页符。
  2. 创建一个新样式"Heading 2 Prime" ,与Heading 2完全相同,但取消选中“分页符之前”选项。请确保您的“Heading 2 Prime”拼写与此处所写的完全一致。
  3. Alt+F11打开VBA development environment,然后单击“插入>模块”打开一个新窗口用于输入程序。
  4. 将以下语句粘贴到窗口中。这些语句用标题2 Prime 样式替换标题 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
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Run Code Online (Sandbox Code Playgroud)

Alt+F11返回到Word,然后按Alt+F8打开“宏”对话框。双击“replace_Heading2_with_Heading2Prime”项来运行宏。

我希望这有帮助。