|
楼主 |
发表于 2016-11-20 10:56
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 duquancai 于 2016-11-20 12:51 编辑
若果文档中无表格,可以把整个文档“作为目标字符”进行查找
1、把整个文档“作为目标字符”进行查找(因为表格中的内容不用关心):
- Sub Word文档中修改格式()
- Dim mt, oRang As Range, n%, m%, act As Range
- Set act = ActiveDocument.Content '把整个文档区域赋值个range对象变量act
- With CreateObject("vbscript.regexp")
- .Pattern = "^第[^条]+条" '这里各显其能输入正则表达式(根据自己的需求)
- .Global = True: .MultiLine = True: '.IgnoreCase = False
- For Each mt In .Execute(act.Text) '整个文档内容作为“目标文本”进行查找
- m = mt.FirstIndex: n = mt.Length
- Set oRang = ActiveDocument.Range(act.Start + m, act.Start + m + n)
- oRang.Bold = True '字符加粗,有一系列的修改格式(根据自己的需求)
- Next
- End With
- End Sub
复制代码
2、有表格单有不关心表格,可以在表格之外的段落而遍历其余每一个段落:
- Sub Word文档中修改格式()
- Dim i As Paragraph, mt, oRang As Range, n%, m%
- With CreateObject("vbscript.regexp")
- .Pattern = "^第[^条]+条" '这里各显其能输入正则表达式(根据自己的需求)
- .Global = True ': .IgnoreCase = False: .MultiLine = True
- For Each i In ActiveDocument.Paragraphs
- If Not i.Range.Information(wdWithInTable) Then '如果段落range对象不在表格内
- For Each mt In .Execute(i.Range.Text)
- m = mt.FirstIndex: n = mt.Length
- Set oRang = ActiveDocument.Range(i.Range.Start + m, i.Range.Start + m + n)
- oRang.Bold = True '字符加粗,有一系列的修改格式(根据自己的需求)
- Next
- End If
- Next
- End With
- End Sub
复制代码
|
|