1

Тема: Определение начала абзаца

День добрый!
Нужен макрос который будет искать начало абзаца и после нумерации проставлять вместо обычного пробела неразрывный (но только в начале абзаца не в коем случае в тексте). Я колупался но так как мои познания в VBA пока очень слабенькие у меня макрос меняет все, может подскажите в чем я ошибаюсь?

Sub Nachaloabzaca()
'
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "([0-9]@>.)( )"
        .Replacement.Text = "\1^s"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
        Do While .Execute(Replace:=wdReplaceNone)
                If Selection.StartOf(Unit:=Word.wdParagraph, Extend:=Word.wdMove) Then
                Selection.Next
                Selection.Find.Execute Replace:=wdReplaceOne
                End If
            Loop
        End With
End Sub

2

Re: Определение начала абзаца

Т.е. нумерация выполнена не списком, а просто текстом и нужно после цифры поставить неразрывный пробел? По-моему, должно так работать:

Sub ReplaceToUnbreakableSpace()
  With Selection
    .HomeKey wdStory
    .ClearFormatting
    .Find.Execute FindText:="(^0013[0-9]@.)( )", _
                  MatchWildcards:=True, _
                  ReplaceWith:="\1^s", _
                  Replace:=wdReplaceAll
  End With
End Sub

К сожалению, в Word нельзя при поиске указать начало абзаца и этот макрос не найдёт цифру, стоящую в начале раздела или документа. Тогда нужно искать иначе и анализировать каждое совпадение

Лучше день потерять — потом за пять минут долететь!

3

Re: Определение начала абзаца

Да именно не списком а текстом. Жалко что нельзя указать начало абзаца, а я голову ломал. Попробовал вроде работает, в принципе мне и не нужно искать цифры в начале раздела, перемещение строго по абзацам. Буду тестировать если что вылезет отпишусь.  Да и что значит в коде ^0013?

4

Re: Определение начала абзаца

Roman пишет:

что значит в коде ^0013

Это обозначает конец абзаца. Т.е., строго говоря, ищется не цифра в начале абзаца, а конец абзаца, за которым следует цифра

Лучше день потерять — потом за пять минут долететь!

5

Re: Определение начала абзаца

блин а я думал как с подстановочными знаками еще абзац прописать, все элементарно просто smile
Большое спасибо viter.alex!