Тема: Удалить форматирование текста
Однажды потребовалось получить текст из объекта без автокадовского форматирования. Оказалось, что в 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 = "([^\\]*)\\[^\\]*;([^\\]*)" Set bma = regb.Execute(amb.SubMatches(1)) For Each bmb In bma freeFormat = freeFormat & bmb.SubMatches(0) & bmb.SubMatches(1) Next freeFormat = freeFormat & amb.SubMatches(2) Next End If End Function
Может, pattern и не совершенен, но когда надо быстро - и так, типа, сойдет...
Вдруг кому-нибудь пригодится.
Еще дописал функцию, которая запрашивает объект и в зависимости от его типа снимает форматирование: у таблиц во всех ячейках, у текста - содержимое.