|
楼主 |
发表于 2024-8-23 09:48
|
显示全部楼层
本帖最后由 weiyingde 于 2024-8-23 10:15 编辑
测试3,直接匹配,不通过文档字符的位置来获取相应文本的话,可以实现。
Sub 录入选() '(Odoc As Document)
Dim mt, mk, oRng As Range, n&, m&, str$, tt$, arr() As Range 'arr()不申明也没关系
Dim rg As Range, x%, dic As Object, k&, a
Set dic = CreateObject("Scripting.Dictionary")
Osr = ActiveDocument.Content
str = Replace(Osr, Chr(7), "")
With CreateObject("vbscript.regexp")
.Global = True: .Ignorecase = False: .MultiLine = True
.Pattern = "((?!\))^[A-D][\..][^\r]+\r)+(?!解析[\r]+\r)"
For Each mt In .Execute(str)
MsgBox mt
Next
End With
End Sub
这再次说明,源文档中有按钮等控件的存在,会影响到正则所匹配的文本的精准定位。
结论:嵌入式控件,一定会当字符串,作为文档的一部分。以致正则已经匹配了正确字符串,在word定位时,由于嵌入式空间的存在,影响了正则所锚定的目标字符首尾位置的精准定位。
我们在消除表格对文档所带来的影响用Replace(ActiveDocument.Content, Chr(7), ""),那么对于控件的影响,能否借用一下?若如此,又该如何表达呢? |
|