Сценарий VBA: найдите заглавные буквы и выделите их жирным шрифтом

Я надеюсь на макрос-код, который будет работать на WORD 2003. У меня есть текст, подобный следующему:

ЭТО НАЧАЛО предложения, которое продолжается отсюда.

Я хотел бы сделать жирный текст с заглавной буквы:

ЭТО НАЧАЛО предложения, которое продолжается отсюда.

Я понимаю, что это было бы тривиально, если жирный текст был отформатирован как "AllCaps", но это не так. Он был создан с использованием Caps Lock.

Есть идеи? Я могу начать, но я не могу понять, как добавить сложный поиск и замену в коде VBA.

1 ответ

Вам нужны регулярные выражения, которые Word предоставляет в расширенном разделе функций поиска.

Вот быстрый пример:

Public Sub Test()
    With ActiveDocument.Content.Find
        .Text = "<[A-Z]{1,}>"
        .MatchWildcards = True
        .MatchCase = True
        .Replacement.Font.Bold = True
        .Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue
    End With
End Sub

"<[AZ] {1,}>" означает следующее:

  • "<" означает совпадение, начинающееся в начале слова
  • "[]" означает совпадение с одним из символов в скобках
  • "[AZ]" часть AZ, находящаяся внутри скобок, означает заглавные буквы от A до Z
  • "{1,}" означает совпадение с предыдущим хотя бы один раз (в этом случае заглавная буква должна встречаться хотя бы один раз подряд)
  • ">" означает, что совпадение должно заканчиваться в конце слова. Шаблон не будет совпадать, например, "THIs", потому что заглавные буквы не идут до конца слова.

Единственное предостережение, с которым вам придется иметь дело, - это однобуквенные слова - я и А будем использовать эту схему шаблона. Возможно, вам будет проще создать шаблон, который будет соответствовать целым группам заглавных слов, но вам все равно придется искать способ обработки начальных или конечных однобуквенных слов в верхнем или нижнем регистре.

Если у вас есть вопросы, оставьте комментарий, и я могу попытаться объяснить дальше.

Другие вопросы по тегам