Поиск текста Word

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
lebmax
Сообщения: 14
Зарегистрирован: 21 сен 2007, 09:45

Поиск текста во всем выделенном документе например К,Е,Д, если найдено удалить строки в которых найдены эти слова
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

В выделенном фрагменте?

Код: Выделить всё

Sub qwe()
Dim FoundRange As Word.Range, WorkingRange As Word.Range
  Set FoundRange = Selection.Range
  Set WorkingRange = Selection.Range
  While FoundRange.Find.Execute(findtext:="we", Forward:=True)
    If FoundRange.Start >= WorkingRange.Start And FoundRange.End <= WorkingRange.End Then
      FoundRange.Select
      Selection.MoveStart wdLine, -1
      Selection.MoveEnd wdLine, 1
      Selection.Delete
    End If
  Wend
  Set FoundRange = Nothing
  Set WorkingRange = Nothing
End Sub
lebmax
Сообщения: 14
Зарегистрирован: 21 сен 2007, 09:45

Спасибо большое, а вот много вариантов (т.е. много слов или различных знаков) для поиска текста можно сделать в этом же макросе
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

Здравствуйте lebmax.
Naeel Maqsudov предложил инструмент, а сколько "вариантов" выполнять с его помощью решать Вам.
Способ использования может выглядеть так:

Код: Выделить всё

Sub qwe(s As String)
   .....
    While FoundRange.Find.Execute(findtext:= s, .....

Код: Выделить всё

Sub delText()
   qwe "we"
   qwe "wi"
   qwe "wu"
   qwe "другой текст"
   ...
End Sub
Евгений.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Хочется еще добавить про параметр MatchWildcards:=True, при котором разрешается искать по маске.

Например "<стол[ауе]>" найдет стола, столу, столе но не найдет "стола" в составе слова "столам" (из-за знака ">").
См. справку Word.
lebmax
Сообщения: 14
Зарегистрирован: 21 сен 2007, 09:45

Спасибо большое очень помогло
Аватара пользователя
mc-black
Сообщения: 250
Зарегистрирован: 08 май 2008, 16:09
Откуда: Россия, Нижний Новгород
Контактная информация:

Пример Naeel Maqsudov, доработанный Teslenko_EA сделать в одну строку кода:

Код: Выделить всё

Sub qwe(s As String)
    Selection.Range.Find.Execute FindText:=s, Forward:=True, ReplaceWith:="", Replace:=wdReplaceAll
End Sub
На заказ: VBA, Excel mc-black@yandex.ru
Ответить