5

У меня выбрана часть документа, и теперь я хочу заменить все разрывы страниц и разделов руководства (последний из всех типов, например, следующая страница, неровная страница, следующая страница, непрерывный, столбец) в этом выделении ,

Я пытался записать макрос, используя слова расширенного поиска / замены для поиска [^ m ^ b], но это не сработало (ничего не нашел в документе, который я спамил с перерывами для тестирования).

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

Тем не менее, как я могу искать специальные разрывы разделов? В расширенном интерфейсе поиска нет возможности специально искать их, но при обычном поиске разрывов разделов не удается найти все. Кроме того, я предполагаю, что есть способ сделать все за один раз.

Обновление, я сейчас пробую разрывы разделов отдельно. Макрос ниже заменяет все разрывы разделов, но делает что-то странное и неправильное. У меня есть четыре разбиения на разделы, все непрерывного типа перед выделением, затем один разрыв раздела типа на следующей странице и одно разбиение раздела типа четной страницы в выделении. После запуска макроса для замены разрывов разделов последний разрыв раздела перед тем, как выбор изменяется с непрерывного на тип четной страницы.

Мой макрос:

Sub break2()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = "^b"
    .Replacement.Text = ""
    .Forward = True
    .Wrap = False
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchKashida = False
    .MatchDiacritics = False
    .MatchAlefHamza = False
    .MatchControl = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub

1 ответ1

3

Этот простой код удаляет все разрывы. Остается только один, что не часто встречается - "Text Wrap Break". Если вы хотите, чтобы это также было удалено, просто добавьте "^l" в параметры Array() . Но имейте в виду, что "^l" также будет соответствовать "Разрыву строки". Во всяком случае, вы не упомянули обрывки текста, и это не так часто, так что я думаю, что это не проблема. Надеюсь, что это поможет кому-то;)

Sub Delete_all_breaks_from_selection()
Dim arr() As Variant
Dim i As Byte

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
'"^b" - Selection Breaks, "^m" - Page Break, "^n" - Column Break
arr = Array("^b", "^m", "^n")
    For i = LBound(arr) To UBound(arr)
        With Selection.Find
            .Text = arr(i)
            .Replacement.Text = ""
        End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Next
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .