|
楼主 |
发表于 2016-11-21 14:27
|
显示全部楼层
如果文档中只由表格和文本部分构成,你这样把chr(7)字符替换后把整个文档作为“目标文本”来查找修改格式,这样没问题,比如这个代码如下(用一个中间字符串变量):Sub 修改格式或者提取字符()
Dim mt, oRng As Range, n&, m&, str$
str = Replace(ActiveDocument.Content, Chr(7), "")
With CreateObject("vbscript.regexp")
.Global = True: .IgnoreCase = False: .MultiLine = True
.Pattern = "重庆" '正则表达式
For Each mt In .Execute(str)
m = mt.FirstIndex: n = mt.Length
Set oRng = ActiveDocument.Range(m, m + n)
oRng.Font.ColorIndex = 6 '设置格式或者提取字符S=oRng.Text
Next
End With
End Sub
如果文档中(除了表格外,有还是没有都无所谓,因为替换了chr(7)字符,表格不会影响了!实际上单元格结束符由chr(13)和chr(7)构成的整体,正则会把单元格“结束符”计算为2个字符,而rangge对象中计算为1个字符)还有“域”对象,也有可能含有其他对象“目录,也是域”、节对象的某些子对象(比如:分隔符等),这时候还是已整个文档为“目标文本”,同样面临定位不准的情况!!!
所以最为理想的还是遍历所有段落(排不排除表格,看具体情况)把每一段作为“目标文本”较为稳妥,只是要牺牲速度作为代价!!!
|
|