Комфорт и автоматизация

.Execute

Как правило, нужно не только выяснить, встречаются ли в строке подстрока удовлетворяющая регулярному выражению, а необходимо получить коллекцию соответствий.

'Ищем все совпадения по регулярному выражению
'Возвращаемое значение - коллекция объектов
Public Function RegExpFind(str As String, _
                            Pattern As String, _
                            Optional Globa1 As Boolean = True, _
                            Optional IgnoreCase As Boolean = False, _
                            Optional Multiline As Boolean = False) _
                      As Object

    Set RegExpFind = Nothing 'Пока не нашли ничего
    
    If Not str Like "" And Not Pattern Like "" Then
    
        Dim RegExp As Object 'Для регулярного выражения
        
        Set RegExp = CreateObject("VBScript.RegExp")
        With RegExp
            .Global = Globa1 'Нужны все совпадения или только первое?
            .IgnoreCase = IgnoreCase 'Регистр неважен?
            .Multiline = Multiline 'Игнорировать переносы строк?
            .Pattern = Pattern 'Регулярка
        End With
        
        On Error Resume Next
        Set RegExpFind = RegExp.Execute(str) 'Коллекция совпадений
        
        Set RegExp = Nothing 'Очистка памяти
    
    End If
    
End Function

Пример использование в проекте VBA:

    Dim objMatches As Object 'Коллекция совпадений
    Dim objMatch As Object 'Отдельное совпадение
    
    Dim strOriginal As String 'Оригинальная строка
    Dim strPattern As String 'Регулярное выражение
    Dim ro As Long 'Записывать результаты будем построчно
    ro = 1 'Начнём с первой строки
    
    strOriginal = "Извлекаем из предложения отдельные слова."
    strPattern = "[А-ЯЁёа-я-]+" 'Русские буквы и дефис

    'Получаем все совпадения
    Set objMatches = RegExpFind(strOriginal, strPattern, True, True)
    
    'Если функция применилась без ошибок
    If Not objMatches Is Nothing Then

        'Если совпадения есть
        If objMatches.Count > 0 Then
    
            'Перебираем совпадения по одному
            For Each objMatch In objMatches

                'Записываем сведения о подстроке
                With objMatch
    
                    Cells(ro, 1) = ro 'Порядковый номер
                    'Номер позиции в оригинальной строке
                    Cells(ro, 2) = .FirstIndex 
                    Cells(ro, 3) = .Length 'Длина подстроки
                    Cells(ro, 4) = .Value 'Подстрока
            
                End With

                ro = ro + 1 'Переход на следующую строку
        
            Next

        End If
        
    End If

    'Очистка памяти
    Set objMatch = Nothing
    Set objMatches = Nothing

    '1	0   9	Извлекаем
    '2	10  2	из
    '3	13  11	предложения
    '4	25  9	отдельные
    '5	35  5	слова

Кстати, пока Вы не подключите в редакторе VBE модуль для работы с регулярными выражениями, пользоваться этой функцией не сможете.

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

Для тестирования в VBA регулярных выражений можно воспользоваться excel-приложением RegExp_Tester.