Word 2010 - quebra de página antes de H2, exceto após H1

6

Eu tenho um documento do Word com mais ou menos a seguinte estrutura:

Title
Heading 1
  Heading 2
    Text
  Heading 2
    Text
Heading 1
  Heading 2
    Text
...

Eu gostaria de quebras de página antes de todos os títulos de H2, exceto os diretamente após os títulos de H1, quando eu preferiria que os dois cabeçalhos estivessem na mesma página.

Eu sei que posso definir automaticamente "quebra de página antes" no estilo do Título 2, mas existe alguma maneira de definir uma opção "exceto diretamente após o Título 1" sem precisar adicionar todas as quebras de página manualmente?

Em outras palavras, gostaria dos intervalos da seguinte forma:

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
...
    
por Bristol 26.12.2012 / 11:26

1 resposta

2

A criação de um novo estilo realizará o que você deseja. Tente este procedimento:

  1. Use a caixa de diálogo Parágrafos para que Word insira uma quebra de página antes de todo o texto Título 2 .
  2. Crie um novo estilo, "Título 2 Prime" , exatamente como Título 2 , mas desmarque a "quebra de página antes" da opção . Certifique-se de soletrar "Título 2 Prime" exatamente como está escrito aqui.
  3. Pressione Alt + F11 para abrir o VBA development environment e clique em "Inserir > Módulo" para abrir uma nova janela para inserir programas.
  4. Cole as seguintes declarações na janela. Essas instruções substituem todos os parágrafos Título 2 que vêm depois dos parágrafos Título 1 , com o estilo Prime do Título 2 .

Código para colar:

'''''''''''''''''''''''''''''''''''''''''''
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
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Pressione Alt + F11 para retornar a Word , depois pressione Alt + F8 para abrir o Caixa de diálogo de macros. Clique duas vezes no item "replace_Heading2_with_Heading2Prime" para executar a macro.

Espero que isso ajude.

    
por 30.12.2012 / 15:06