我刚刚采取了VBA路线自动化几天今天的任务,所以请原谅,如果我听起来很天真,我试图打开一个Word文档,然后搜索一个表达式来突出显示(粗体)它,但我得到错误“用户定义的类型未定义”我能够打开Word文档,但无法执行模式搜索。我已经收集了位& peices的代码从互联网上,但它不工作,我使用的是Office 2013和添加了Microsoft VBscript Reg Ex 5.5在参考。我搜索的模式是从“亲爱的”开始,直到遇到)。干杯#疯狂#
Sub Pattern_Replace()
Dim regEx, Match, Matches
Dim rngRange As Range
Dim pathh As String, i As Integer
pathh = "D:\Docs\Macro.docx"
Dim pathhi As String
Dim from_text As String, to_text As String
Dim WA As Object, WD As Object
Set WA = CreateObject("Word.Application")
WA.Documents.Open (pathh)
WA.Visible = True
Set regEx = New RegExp
regEx.Pattern = "Dear[^0-9<>]+)"
regEx.IgnoreCase = False
regEx.Global = True
Set Matches = regEx.Execute(ActiveDocument.Range.Text)
For Each Match In Matches
ActiveDocument.Range(Match.FirstIndex, Match.FirstIndex + Len(Match.Value)).Bold = True
Next
End Sub
3条答案
按热度按时间fkvaft9z1#
您需要使用反斜杠转义正则表达式中的括号“)”:
这是因为它在正则表达式中具有特定的含义。
我个人也会把对单词范围的引用分成几行:
虽然这不是必须的。
mf98qq942#
你不需要正则表达式-在Word中使用通配符查找/替换将更有效地完成这项工作:
ubbxdtey3#
考虑以下文本
亲爱的萨莉阿姨)我已经去上学了。
正则表达式模式为
"Dear[^)]+"
regex101 fiddle here
这一个将包括括号。
Dear[\w\s]+\)