Поиск в документе. Перенос найденного.

Программирование на Visual Basic for Applications
kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Поиск в документе. Перенос найденного.

Сообщение kibernetics » 09.06.2009 (Вт) 17:41

Народ, как сделать поиск в документе такой:
искать по всему документу. надо перебрать все найденные искомые значения и перенести их в начало абзаца:
Код: Выделить всё
With ActiveDocument.Range.Find
        .ClearFormatting
        .text = "[CODE=" & Здесь любые цифры " & "]"
        .Execute
        If .Found Then
            'найденный фрагмент вырезать(только его, остальное после него оставить как есть) и вставить в самом начале этого абзаца           
        End If
    End With

viter.alex
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal

Re: Поиск в документе. Перенос найденного.

Сообщение viter.alex » 10.06.2009 (Ср) 7:13

Попробуй так:
Код: Выделить всё
  With ActiveDocument.Range.Find
    .Text = "\[CODE=[0-9]{1;}\]"
    .MatchWildcards = True
    While .Execute
      .Parent.Paragraphs(1).Range.InsertBefore .Parent.Text
      .Parent.Delete
    Wend
  End With


При поиске, если объект найден, то тот объект, который инициировал поиск, переопределяется до найденного фрагмента. Если поиск инициировать через Selection, то найденный фрагмент будет выделен. Если через Range, то найденный фрагмент переопределит исходный Range. Таким образом, свойство Parent обекта Find всегда дает нам найденный текст.
Ну а дальше все просто. В начало абзаца, в котором найден текст, мы ставим то, что нашли. А затем, то, что нашли удаляем.
Не проверял, но должно работать. :)
Лучше день потерять — потом за пять минут долететь!


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20

    TopList