MSWord宏:搜索并突出显示格式化的文本模式

时间:2013-02-07 15:17:10

标签: ms-word vba vbscript

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

例如:

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

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



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

此句以粗体标点符号结尾。应突出显示第一个句点。

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


3)SmallCaps中的任何单词,长度> 4个字母,但不是大写。我不知道如何在markdown中做小型掌上电脑......但想象一下,以下文字在MSWord的小型掌握中:

想象一下这一切都在小型大写字母中。 。 。应该突出显示“在”之下的单词,因为它长于四个字符但不是大写



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

1 个答案:

答案 0 :(得分:0)

运行cmd,

cscript //Nologo regexp02.vbs 

regexp02.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的正则表达式:

公开参考

Open reference

选择COM服务器Microsoft VBScript正则表达式5.5

Select COM server

VBA代码:

Dim objRegExp As New VBScript_RegExp_55.RegExp

objRegExp.IgnoreCase = False
objRegExp.Global = True 

objRegExp.Pattern = Pattern1

录制宏

Record macro

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

open search dialog

选择字体属性

select font property

选择字体样式

select font style

按查找下一步

Press Find Next

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

Stop macro record, open VBA editor

编辑宏SearchItalic

Edit macro SearchItalic

运行宏SearchItalic

Run macro 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