1

Тема: Удаление нескольких символов абзаца не срабатывает перед таблицами

Здравствуйте! Подскажите пожалуйста,
необходимо удалить 2 и более следующих подряд символов абзаца.
Хотелось бы использовать такой код:

ActiveDocument.Select
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "(^0013){2;}"
        .Replacement.Text = "\1"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = True
     End With
Selection.Find.Execute Replace:=wdReplaceAll

Однако он отказывается работать перед любой таблицей. Также не меняет два символа абзаца
на один в конце текста, но это не обязательно. Как таблица может мешать поиску? Ведь хоть 10 раз можно перед таблицей нащёлкать Enter-ом, ни одного совпадения не будет найдено sad

2

Re: Удаление нескольких символов абзаца не срабатывает перед таблицами

aequit пишет:

Здравствуйте! Подскажите пожалуйста,
необходимо удалить 2 и более следующих подряд символов абзаца.
Хотелось бы использовать такой код:

ActiveDocument.Select
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "(^0013){2;}"
        .Replacement.Text = "\1"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = True
     End With
Selection.Find.Execute Replace:=wdReplaceAll

Однако он отказывается работать перед любой таблицей. Также не меняет два символа абзаца
на один в конце текста, но это не обязательно. Как таблица может мешать поиску? Ведь хоть 10 раз можно перед таблицей нащёлкать Enter-ом, ни одного совпадения не будет найдено sad

Попробуйте как-нибудь так

Sub Ìàêðîñ1()
'
sText = "^0013{2;}"
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
With Selection.Find
        .Text = sText
        .Replacement.Text = "Chr(16)"
        .Forward = True
        .Wrap = wdFindAsk
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    Do While .Execute = True
        .Parent.Range.Text = Chr(13)
    Loop
End With
End Sub
Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

3

Re: Удаление нескольких символов абзаца не срабатывает перед таблицами

внешняя ссылка
Вот тут погляньте ещё

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

4

Re: Удаление нескольких символов абзаца не срабатывает перед таблицами

Попробуйте как-нибудь так

Sub Ìàêðîñ1()

sText = "^0013{2;}"
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
With Selection.Find
        .Text = sText
        .Replacement.Text = "Chr(16)"
        .Forward = True
        .Wrap = wdFindAsk
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    Do While .Execute = True
        .Parent.Range.Text = Chr(13)
    Loop
End With
End Sub

Спасибо конечно, теперь перед таблицей удаляет Chr(13), но больше, чем нужно, так, что текст "проваливается" в первую ячейку таблицы. Если два Chr(13) в конце документа, зацикливание и выход только по Break (

5

Re: Удаление нескольких символов абзаца не срабатывает перед таблицами

Fck_This пишет:

внешняя ссылка
Вот тут погляньте ещё

Я как раз оттуда и взял ^0013{2;}

6

Re: Удаление нескольких символов абзаца не срабатывает перед таблицами

aequit пишет:

Здравствуйте! Подскажите пожалуйста,
необходимо удалить 2 и более следующих подряд символов абзаца.
Хотелось бы использовать такой код:

ActiveDocument.Select
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "(^0013){2;}"
        .Replacement.Text = "\1"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = True
     End With
Selection.Find.Execute Replace:=wdReplaceAll

Однако он отказывается работать перед любой таблицей. Также не меняет два символа абзаца
на один в конце текста, но это не обязательно. Как таблица может мешать поиску? Ведь хоть 10 раз можно перед таблицей нащёлкать Enter-ом, ни одного совпадения не будет найдено sad

Попробуйте такой код

Sub del_Empty_Paragraphs()
Dim sText As String
Dim orng As Word.Range
sText = "^0013{2;}"
Set orng = ActiveDocument.Range
    orng.Find.ClearFormatting
    orng.Find.Replacement.ClearFormatting

With orng.Find
        .Text = sText
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindStop
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    
    Do While .Execute = True
    orng.End = orng.End - 1
    orng.Delete
    Loop
End With
End Sub

7

Re: Удаление нескольких символов абзаца не срабатывает перед таблицами

Boris_R пишет:

Попробуйте такой код

Спасибо, это работает и перед таблицами, и в конце документа.