Перебирайте главы, где названия глав находятся в массиве - PullRequest
2 голосов
/ 09 июня 2019

Нужно пройтись по документу и найти заголовки глав (глава первая, глава вторая и т. Д. - это должен быть массив, как я полагаю), затем вставить разрыв страницы перед словом «Глава» и завершить двумя разрывами строки после Номер главы.

Вместо того, чтобы копировать мой код для 20+ глав, как мне сделать это более эффективным, используя массив для терминов поиска и замены?

Sub ChapterHeadings()
'
' ChapterHeadings Macro
'


    Dim Chapter As Variant
    Chapter = Array("Chapter One", "Chapter Two", "Chapter Three", "Chapter Four", "Chapter Five")

    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Style = ActiveDocument.Styles( _
        "Heading 1,Chapter Heading")
    With Selection.Find
        .Text = Chapter
        .Replacement.Text = "^m"Chapter"^p^p"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

End Sub
Sub ChapterHeadings()
'
' ChapterHeadings Macro
'
'
' Copy and paste this for every chapter heading - this works!!!!!!!

    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Style = ActiveDocument.Styles( _
        "Heading 1,Chapter Heading")
    With Selection.Find
        .Text = "Chapter One"
        .Replacement.Text = "^mChapter One^p^p"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

End Sub

При поиске заголовков глав он должен совпадать с тем, который установлен в массиве глав. При совпадении он заменяет результаты на разрыв страницы (^ m), за которым следует заголовок главы, в котором он был первоначально найден, а затем два переноса строки (^ p ^ p).

1 Ответ

1 голос
/ 09 июня 2019

Непроверенные:

Sub ChapterHeadings()
'
' ChapterHeadings Macro
'


    Dim Chapters As Variant, Chapter
    Chapter = Array("Chapter One", "Chapter Two", "Chapter Three", "Chapter Four", "Chapter Five")
    For Each Chapter in Chapters
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        Selection.Find.Replacement.Style = ActiveDocument.Styles( _
        "Heading 1,Chapter Heading")
        With Selection.Find
            .Text = Chapter
            .Replacement.Text = "^m" & Chapter & "^p^p"
            .Forward = True
            .Wrap = wdFindContinue
            .Format = True
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
    Next Chapter

End Sub
...