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

Ms word MSWord宏:搜索并突出显示格式化的文本模式,ms-word,vba,vbscript,Ms Word,Vba,Vbscript,我正在尝试编写一个MSWord宏,它将在MSWord文件中查找并突出显示某些类型的文本字符串(黄色) 例如: 1) 斜体逗号,后跟空格,然后是非斜体文本。因此,例如: 这个句子中的第二个逗号是斜体,应该由所需的宏突出显示。但是这个句子中的逗号不应该突出显示,因为整个句子都是斜体。 2) 粗体字符(任何类型,甚至是空白),前后都有非粗体字符。因此,例如: 这个句子以粗体标点符号结尾。应该强调第一个时期。 我知道第一次月经看起来很正常,但事实并非如此。很大胆。 3) 任何大写且长度大于4个字母但

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

例如:

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

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

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

这个句子以粗体标点符号结尾。应该强调第一个时期。 我知道第一次月经看起来很正常,但事实并非如此。很大胆。


3) 任何大写且长度大于4个字母但未大写的单词。我不知道如何在降价时做小盘。。。但是,想象一下,MSWord中的以下文本是小写的:

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

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

运行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的正则表达式:

公开引用

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

VBA代码:

Dim objRegExp As New VBScript_RegExp_55.RegExp

objRegExp.IgnoreCase = False
objRegExp.Global = True 

objRegExp.Pattern = Pattern1
记录宏

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

选择字体属性

选择字体样式

按查找下一个

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

编辑宏搜索斜体

运行宏搜索斜体

搜索斜体文本:

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

如何在Word文档中搜索(并重新格式化)突出显示的文本。谢谢,但这似乎是在处理与查找突出显示的文本有关的稍微不同的场景。我的搜索模式有点复杂。再次感谢你的帮助。但我的问题是,正则表达式似乎不允许包含格式的模式匹配。例如:据我所知,没有办法编写一个正则表达式来查找第一个字符都是大写和粗体的单词,但单词的其余部分是小写和非粗体的。@MarcusChan,谢谢。我想我的问题和你联系的那个有点不同。我需要一种方法来识别由格式更改标识的文本模式。因此,提供另一个例子:我需要找到一种方法来突出显示斜体元音,然后是非斜体辅音。例如,这是一个例子。只有“是”和“前”应该匹配。谢谢!但是我在使用正则表达式和格式化特性时仍然有困难。我需要一种方法来选择并突出显示我在第一篇文章中提供的前两个示例(斜体逗号,粗体句号)。您对如何实现这一点有何想法?请在VBA中添加Microsoft VBScript正则表达式5.5。运行宏记录,编辑自动编码Alt+F11。再次感谢您的帮助。我仍然不清楚正则表达式是否能够单独解决我正在寻找的涉及格式更改的模式的问题。请参阅我的原始帖子中的示例(1)和(2),了解我的意思。正则表达式-仅限查询文本。使用字体对象和搜索来更改和查找文本样式。@nixda我同意你的看法。只有一个问题。)我不懂英语。