2

我希望有一个可以在 WORD 2003 上运行的宏代码。我有如下文本:

这是从这里继续的句子的开头。

我想让大写的文本加粗:

这是从这里继续的句子的开头。

我知道如果粗体文本的文本格式为“AllCaps”,这将是微不足道的,但事实并非如此。它是使用大写锁定创建的。

有任何想法吗?我可以开始,但我不知道如何在 VBA 代码中添加复杂的查找和替换。

4

1 回答 1

5

你想要的是正则表达式,它是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”,因为大写字母不会出现在单词的末尾。

您必须处理的一个警告是单字母单词 - I 和 A 将使用这种模式方案加粗。您可能会发现创建匹配整组大写单词的模式更容易,但您仍然必须找到一种方法来处理前导或尾随的大写单字母单词。

如果您有任何疑问,请发表评论,我可以尝试进一步解释。

于 2013-11-12T23:06:03.117 回答