1

我正在尝试编写一个 MSWord 宏,该宏将在 MSWord 文件中找到并突出显示(黄色)某些类型的文本字符串。

例如:

1) 斜体逗号,后跟空格,然后是非斜体文本。因此,例如:

这句话中的第二个逗号是斜体的,应该由所需的宏突出显示。但是这句话中的逗号不应该突出显示,因为整个句子都是斜体的。



2) 一个粗体字符(任何种类,甚至是空格),前后都是非粗体字符。因此,例如:

这句话以粗体标点符号结尾应该强调第一个时期。

我知道第一个时期可能看起来很正常,但事实并非如此。它很大胆。


3) SmallCaps 中的任何单词,长度大于 4 个字母,但不大写。我不知道如何在降价中使用小型大写字母......但想象一下,以下文本在 MSWord 中的小型大写字母中:

想象一下所有这些都在小型股中。. . “under”这个词应该突出显示,因为它的长度超过四个字符但没有大写



有谁知道这是否可能?我知道使用正则表达式很容易找到文本模式,但是为这些模式添加格式更改似乎很棘手。

4

1 回答 1

0

运行cmd,

cscript //Nologo regexp02.vbs 

正则表达式02.vbs:

Dim objRegExp    : Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True

Dim input 
input="Imagine All of This Is in Small Caps. . . the Word under Should Be Highlighted Because It Is More Than Four Characters Long but is not Capitalized"

WScript.Echo input

WScript.Echo 

Dim Pattern1 : Pattern1 = "\b[a-z]{5,}\s"
WScript.Echo "Pattern1 : " & Pattern1
WScript.Echo 

objRegExp.Pattern = Pattern1

Set objMatches = objRegExp.Execute(input)

For i=0 To objMatches.Count-1
Set objMatch = objMatches.Item(i)
WScript.Echo objMatch.Value
Next

WScript.Echo 

Dim Pattern2 : Pattern2 = "\b[A-Z]([a-z]{4,})\s"
WScript.Echo "Pattern2 : " & Pattern2
WScript.Echo 

objRegExp.Pattern = Pattern2

Set objMatches = objRegExp.Execute(input)

For i=0 To objMatches.Count-1
    Set objMatch = objMatches.Item(i)
    WScript.Echo objMatch.Value

    WScript.Echo Left(objMatch.Value, 1)

'TODO test bold sumbol Left(objMatch.Value, 1)
'
'   TODO Highlight Code
'

Next

输出:

Imagine All of This Is in Small Caps. . . the Word under Should Be Highlighted Because It Is More Than Four Characters Long but is not Capitalized

Pattern1 : \b[a-z]{5,}\s

under

Pattern2 : \b[A-Z]([a-z]{4,})\s

Imagine
I
Small
S
Should
S
Highlighted
H
Because
B
Characters
C

VBA 的正则表达式:

打开参考

打开参考

选择 COM-server Microsoft VBScript 正则表达式 5.5

选择 COM 服务器

VBA代码:

Dim objRegExp As New VBScript_RegExp_55.RegExp

objRegExp.IgnoreCase = False
objRegExp.Global = True 

objRegExp.Pattern = Pattern1

录制宏

录制宏

按 Ctrl+F,打开搜索对话框

打开搜索对话框

选择字体属性

选择字体属性

选择字体样式

选择字体样式

按查找下一个

按查找下一个

停止宏录制,打开 VBA 编辑器

停止宏录制,打开 VBA 编辑器

编辑宏 SearchItalic

编辑宏 SearchItalic

运行宏 SearchItalic

运行宏 SearchItalic

搜索斜体文本:

Sub SearchItalic()

Selection.Find.ClearFormatting
Selection.Find.Font.Italic = True
With Selection.Find
    .Text = ""
    .Forward = True
    .Wrap = wdFindContinue
End With
Selection.Find.Execute
End Sub
于 2013-02-07T19:35:04.683 回答