Word VBA Макросы: Как найти фразу по заданному слову и записать эту фразу в переменную?

Автор Blacit, 10 декабря 2019, 13:27

Blacit

Как в тексте найти фразу по заданному слову и записать фрагмент этой фразы в переменную?
Есть абзац вида:
Текст (текст), (ИД 123456), текст.

Нужно найти слово ИД, после которого пробел и одна или несколько цифр. Фраза находится внутри скобок. Макрос должен скопировать в переменную цифры, которые находятся после пробела.

Искомая фраза всегда есть в тексте, можно не делать проверку: существует фраза или нет.
Искомая фраза находится в тексте один раз.

Администратор

Макрос
Sub Макрос()

    Dim RegExp_ As Object, match_ As Object
    Dim doc As Document, var
   
   
    '1. Присваиваем имя "doc" активному файлу. Может быть так будет удобнее читать и писать код.
    Set doc = ActiveDocument
   
    '2. Создание объекта, который будет искать. Можно обойтись и без него,
        ' но с ним код может быть проще, не сильно нагромождённый.
    Set RegExp_ = CreateObject("VBScript.RegExp")
   
    '3. Указываем, что искать.
    RegExp_.Pattern = "\(ИД \d+\)"
     
    '4. Поиск.
    Set match_ = RegExp_.Execute(doc.Range).Item(0)
   
    '5. Запись найденного в переменную "var".
    ' Извлекаем данные от пятого символа и до конца фразы.
    var = Mid(match_.Value, 5)
    ' Удаляем с конца круглую скобку.
    var = Left(var, Len(var) - 1)

End Sub
[свернуть]