Тема: VBA. Удаления форматирования текста

С помощью регулярных выражений (RegExp в VBA) удалось очистить текст от форматирования. Из тех вариантов форматирования, что встречались у меня, очистка прошла успешно.

Public Function freeFormat(sText As String) As String
Dim rega As RegExp, regb As RegExp, ama, amb, bma, bmb
freeFormat = ""
Set rega = New RegExp
Set regb = New RegExp
rega.Global = True
regb.Global = True
rega.IgnoreCase = True
regb.IgnoreCase = True
rega.Pattern = "([^{]*){([^}]*)}([^{]*)"
Set ama = rega.Execute(sText)
If ama.Count > 0 Then
    For Each amb In ama
        freeFormat = freeFormat & amb.SubMatches(0)
        regb.Pattern = "([^\\]*)((\\[LO])|(\\[^\\]*;))*([^\\]*)"
        Set bma = regb.Execute(amb.SubMatches(1))
        For Each bmb In bma
            freeFormat = freeFormat & bmb.SubMatches(4)
        Next
        freeFormat = freeFormat & amb.SubMatches(2)
    Next
End If
End Function

Re: VBA. Удаления форматирования текста

что то не понял что нужно с данным кодом делать, не похож чтото на лисп...

Re: VBA. Удаления форматирования текста

> Dextron3
заголовок прочти - это VBA

Re: VBA. Удаления форматирования текста

я понял что это VBA и как его запустить?

Re: VBA. Удаления форматирования текста

> Dextron3
Для начала купить учебник по VBA
~'J'~

Re: VBA. Удаления форматирования текста

Код супер. Спасибо.  :D
Дополнил код условием, без него, если нет спецсимволов, возвращает пусто. Рекомендую. :!:


'Взято из: https://www.caduser.ru/forum/topic43895.html
'   Автор: zagzag2003
'    Дата:26-08-2008 04:21:23
'
'VBA. Удаления форматирования текста:
' С помощью регулярных выражений (RegExp в VBA) удалось очистить текст от
' форматирования. Из тех вариантов форматирования, что встречались у меня,
' очистка прошла успешно.
'
' 20180828  Исправлено.
Public Function freeFormat(sText As String) As String
Dim rega As RegExp, regb As RegExp, ama, amb, bma, bmb
freeFormat = ""
Set rega = New RegExp
Set regb = New RegExp
rega.Global = True
regb.Global = True
rega.IgnoreCase = True
regb.IgnoreCase = True
rega.Pattern = "([^{]*){([^}]*)}([^{]*)"
Set ama = rega.Execute(sText)
If ama.Count > 0 Then
    For Each amb In ama
        freeFormat = freeFormat & amb.SubMatches(0)
        regb.Pattern = "([^\\]*)((\\[LO])|(\\[^\\]*;))*([^\\]*)"
        Set bma = regb.Execute(amb.SubMatches(1))
        For Each bmb In bma
            freeFormat = freeFormat & bmb.SubMatches(4)
        Next
        freeFormat = freeFormat & amb.SubMatches(2)
    Next
'20180828 Добавлено условие (иначе функция возвращает ""):
Else
    freeFormat = Replace(sText, "\\", "\", , , vbBinaryCompare)
End If
End Function

Re: VBA. Удаления форматирования текста

Автору низкий поклон, долго искал. Как подключить regExp здесь
VBA Excel. Регулярные выражения (объекты, свойства, методы)