Постоянно использую замену текста в Вордовских документах с помощью .Find.Replacement
Всё было бы хорошо, если бы в стандартных Вордовских регулярных выражениях был предусмотрен оператор «|». Но его почему-то нет, и в результате то, что можно было бы обработать одной заменой со списком образцов поиска, разваливается на целую пачку замен.
Наткнулся на существование объекта RegExp, в котором оператор «|» присутствует. Но не могу понять, можно ли этот объект использовать в точности так, как используется .Find.Replacement, т.е. когда заменяемый текст подставляется во всём документе разом (!) в точности на место искомого текста с сохранением форматирования.
Ведь regexObject.Replace на выходе даёт просто строку, и даже если я запишу:
ActiveDocument.Content = regexObject.Replace(ActiveDocument.Content, Replace_Str)
то на выходе получу документ хоть и с нужными заменами, но при этом с полным уничтожением форматирования во всём документе.
Если же я буду собирать коллекцию найденных элементов и потом поштучно их обрабатывать, то, очевидно, это будет намного дольше, чем используемый сейчас у меня громоздкий список одиночных замен...
Есть ли выход из этого тупика? Или я что-то не так понимаю?
Всё правильно вы поняли: так оно и есть:
1) в Ворде нет оператора |
2) при использовании RegExp потеряется оформление.
Остаётся делать так, как вы и делаете сейчас - нужно писать код для каждой ситуации.
Возможно код можно как-нибудь оптимизировать - уменьшить, ускорить. Надо смотреть конкретную вашу ситуацию.