2015-12-17 5 views
0

Можно ли использовать шаблоны замещения с RegExp объектами в Word VBA? Могу ли я найти документ для шаблона с кучей круглых скобок и заменить его чем-то вроде \4 \2? (Я попробовал, но использовал литеральную строку.)Regex заменяет макросы Word

ответ

1

См. this answer для получения информации о RegEx с VBA. Хотя этот конкретный ответ был написан специально для Excel VBA, он все равно будет применяться к слову.

В примере кода, он устанавливает MyRange = ActiveSheet.Range("A1") вместо этого вы могли бы сделать, Set MyRange = ActiveDocument.Range(Start:=0, End:=Selection.End) и заменить MyRange.Value с MyRange.Text

Существующие ответы являются мощным инструментом. Иногда полезно взглянуть на код Excel VBA для всех других приложений Microsoft, поскольку Excel - это инструмент, который имеет для него код, написанный для него.

+0

Я думаю, что «Пример 4» в [этом ответе] (http://stackoverflow.com/a/22542835/1015293) соответствует тем, что я ищу, не так ли? Спасибо, я попробую. – Frungi

1

Word, сам по себе, не поддерживает RegEx. Он имеет свои собственные функции Wildcard. Это похоже на RegEx, но не идентично. Вы можете увидеть возможности, нажав «Дополнительно» в диалоговом окне «Заменить» (Ctrl + H), активировав флажок «Подстановочный знак», а затем просмотрев список в «Специальный». Если вы ищете в Интернете набор таких терминов, как Word Find Replace Wildcard, вы найдете множество примеров и обсуждений.

Подход, предложенный JDB_Dragon, обычно часто не является удовлетворительным в Word, потому что манипулирование только строкой, а затем запись ее обратно в документ теряет все форматирование.

+0

Word не делает, но VBA в Word делает. Вот почему я указал объекты RegExp. – Frungi

+0

Нет, у VBA нет RegEx. Вы можете добавить ссылку на библиотеку, которая предоставляет RegEx для вашего кода VBA, но это не является частью VBA. И если вы распространяете свой код, вам нужно убедиться, что на целевом компьютере есть эта библиотека, иначе ваш код не может работать. И, как я уже сказал, если сохранение или применение форматирования Word необходимо, RegEx не будет/не сможет работать. –

+0

О, моя ошибка; Я подумал, что если я смогу использовать его в VBA после отметки окна, он должен быть частью VBA (и я подумал, что было бы ясно, о чем я говорил, когда впервые упомянул об этом). И нет, форматирование не имеет отношения к моему делу. – Frungi