谢谢你的指导,这个问题解决的很好透彻。
还有个问题,就是将这个页面的汉字和拼音在括号的位置互换。
第一步是:目的是将括号里的拼音调到括号前面,将相应的汉字调到括号里面。
这一步在duquancai 的帮助下,得以实现。
代码如下:
Sub 移汉字到括号里对应拼音在括号前()
Dim reg As Object, mt, mh, oDOC As Document
Set oDOC = ActiveDocument
With oDOC.Content.Find
.Execute "([\((])^32{1,}", , , 1, , , , , , "\1", 2
.Execute "^32{1,}([\))])", , , 1, , , , , , "\1", 2
.Execute "^32{1,}", , , 1, , , , , , "^32", 2
End With
Set reg = CreateObject("vbscript.regexp")
reg.Global = True: reg.Pattern = "[\((][^)\)]+[\))]"
For Each mt In reg.Execute(oDOC.Content)
m = mt.FirstIndex: n = mt.Length
With oDOC.Range(m, m + n)
reg.Pattern = " ": t = reg.Execute(.Text).Count + 1
.Start = .Start - t
.Find.Execute "([一-﨩]{" & t & "})([\((])(*)([\))])", , , 1, , , , , , "\3\2\1\4", 1
reg.Pattern = "[\((][^)\)]+[\))]"
For Each mh In reg.Execute(.Text)
f = mh.FirstIndex: l = mh.Length
With oDOC.Range(.Start + f, .Start + f + l)
.Start = .Start + 1: .End = .End - 1
.Font.Color = RGB(255, 255, 255)
End With
Next
End With
Next
End Sub
现在是第二步:要求回到第一步的效果:仍旧讲汉字放到括号前,对应的拼音置于括号里。
我的核心代码是:
Sub 移进汉字移出拼音()
With ActiveDocument.Content.Find
.Execute "([一-﨩]+)([!\(]+)([\(])([一-﨩]+)([\)])", , , 1, , , , , , "\1\4\3\2\5", 1
End With
End Sub请帮我看看,先谢了。
第一步附件在http://club.excelhome.net/thread-1334017-3-1.html 第29楼
|