Автор Тема: Word VBA Макросы: Выполнение действия в зависимости от текста.  (Прочитано 689 раз)

Оффлайн Rengame113

  • Посетитель форума
  • Сообщений: 71
Возможно ли в word сделать так, чтобы действие выполнялось в зависимости от текста в файле?
Например если в файле есть текст «Паша», то макрос выполняет Действие1, если «Миша» - Действие2, если «Петя» - Действие3 и т.д.
Если текст найден, то остальные условия макрос не должен проверять. Например, если найден "Паша", то Мишу и Петю не надо искать.
Если ни одна фраза не найдена, то нужно сделать некоторое действие.

Оффлайн Администратор

  • Administrator
  • Сообщений: 1684
Макрос
Sub макрос()

    Dim cln As Collection, found As Boolean, i As Long
   
   
    ' Записываем в коллекцию, что нужно искать.
    Set cln = New Collection
    cln.Add Item:="Паша"
    cln.Add Item:="Миша"
    cln.Add Item:="Петя"
   
    For i = 1 To cln.Count
   
        ' Поиск по всему документу. При этом диалог "Найти и заменить" не используется.
        With ActiveDocument.Range.Find
            '1) Что искать.
            .Text = cln(i)
            '2) Поиск (Execute). При этом метод Execute вернёт True или False.
                ' В переменную "found" записываем, было найдено или нет.
            found = .Execute
        End With
       
        ' Если не найдено, то переход к поиску следующей фразы.
        If found = False Then
            GoTo metka_NextSearch
        End If
           
        ' Если найдено, то смотрим, что найдено и выбираем, что сделать.
        Select Case cln(i)
            Case "Паша"
                ' Действия, если Паша.
            Case "Миша"
                ' Действия, если Миша.
            Case "Петя"
                ' Действия, если Петя.
        End Select
       
        ' Остальные условия не проверяем.
        Exit For
           
metka_NextSearch:
    Next i
   
    ' Действия, если ничего не найдено.
    If found = False Then
        ' Действия в остальных случаях.
    End If

End Sub

Оффлайн Rengame113

  • Посетитель форума
  • Сообщений: 71