Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2011, 15:45   #1
CacheLot
Новичок
Джуниор
 
Регистрация: 19.01.2011
Сообщений: 1
По умолчанию Найти по шаблону и выполнить процедуру) Возможно ли?

Имею большой текст, в ктором нужно отыскать по следующему шаблону
Код:
"\[*\]"
Значение этого нечто (*) - поместить в массив.. или куда угодно возможно скопировать определённое место списком.. вобщем как то получить доступ к найденному..

Юзаю метод Find... пока не получается ничего.. Подскажите полз..

Код:
Set myRange = ActiveDocument.Content
With myRange.Find
    '.ClearFormatting
    '.Replacement.ClearFormatting
    '.MatchWildcards = True
    .Text = "\[" & "*" & "\]"
    '.Replacement.Text = "бла бла бла"
    '.Execute Replace:=wdReplaceOne  'wdReplaceAll
End With
CacheLot вне форума Ответить с цитированием
Старый 20.01.2011, 07:55   #2
garik64
Форумчанин
 
Регистрация: 09.07.2009
Сообщений: 111
По умолчанию

Dim Clip As String
Dim MyData As New DataObject

***

Selection.Find.Execute
Selection.Copy

***

MyData.GetFromClipboard
Clip = MyData.GetText

***

With Selection.Find
.Text = Clip


и т.д.
garik64 вне форума Ответить с цитированием
Старый 20.01.2011, 10:19   #3
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,079
По умолчанию

Код:
  .Text = "\[*\]"
    .Replacement.Text = "mmm"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = True
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 20.01.2011, 10:28   #4
garik64
Форумчанин
 
Регистрация: 09.07.2009
Сообщений: 111
По умолчанию

Пардон. Не туда ответил
garik64 вне форума Ответить с цитированием
Старый 20.01.2011, 10:34   #5
garik64
Форумчанин
 
Регистрация: 09.07.2009
Сообщений: 111
По умолчанию

Цитата:
Сообщение от shanemac51 Посмотреть сообщение
Код:
  .Text = "\[*\]"
    .Replacement.Text = "mmm"
Это не даёт доступа к найденному. Надо вводить переменную, присваивать ей значение из буфера и потом подставлять в другие операции.
garik64 вне форума Ответить с цитированием
Старый 20.01.2011, 15:56   #6
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Код:
    Dim MyCol As New Collection
    Dim MyItem As Range
    ActiveDocument.Content.Select
    With Selection.Find
        .ClearFormatting
        ' Коллекционируем ранги с найденным текстом
        Do While (.Execute(FindText:="\[*\]", MatchWildcards:=True, Forward:=True))
            MyCol.Add Selection.Range
        Loop
    End With
    'Добавляем + в начало и конец найденного текста
    For Each MyItem In MyCol
        MyItem.Text = "+" & MyItem.Text & "+"
    Next MyItem
Надо работать именно с объектом Selection - смотрите в HELP Word VBA замечание по разнице использования Range и Selection в топике по объекту Find.
Если ставится задача подстановки текста, то коллекция не нужна.
Просто модифицируйте в цикле Selection.Range.Text

Последний раз редактировалось Aent; 20.01.2011 в 16:39.
Aent вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как найти дату по шаблону kate158 Помощь студентам 6 08.11.2010 14:40
где найти паскаль-процедуру для метода Гира натка:) Помощь студентам 3 01.02.2010 13:27
как выполнить одну процедуру в другой? betirsolt Общие вопросы Delphi 4 22.01.2010 02:24
Как выполнить процедуру (функцию) из другого модуля Всеслав Общие вопросы Delphi 4 23.05.2009 19:43