我试图遍历段落编号,使其与文本中的引用匹配,然后自动创建交叉引用。我遇到的问题是,找到文本后,Selection.Text似乎与我一半时间传递给它的内容不匹配(RefNum)。我怀疑问题出在我的“ Do While Selection.Find.Execute = True”行中,但作为VBA的新手,我似乎无法将其包裹住。谁能帮我看看吗?
Sub cross_reference_generator()
Dim RefList As Variant
Dim Ref As String
Dim i As Integer
With ActiveDocument
Selection.HomeKey Unit:=wdStory
RefList = .GetCrossReferenceItems(wdRefTypeNumberedItem)
For i = UBound(RefList) To 1 Step -1
Selection.HomeKey Unit:=wdStory
Ref = Trim(RefList(i))
RefNum = Split(Ref, " ")(0)
With Selection.Find
Do While Selection.Find.Execute = True
.Forward = True
.Wrap = wdFindStop
.Text = RefNum
.Execute
Selection.InsertCrossReference ReferenceType:="Numbered item", _
ReferenceKind:=wdNumberFullContext, _
ReferenceItem:=CStr(i), _
InsertAsHyperlink:=True, _
IncludePosition:=False, _
SeparateNumbers:=False, _
SeparatorString:=" "
Loop
End With
Next i
End With
End Sub
谢谢!
我没有什么可以测试的,但似乎您的某些线路不正常。例如,您第一次拨打电话Execute
是在设置.Text
属性之前...
Sub cross_reference_generator()
Dim RefList As Variant
Dim Ref As String
Dim i As Integer
With ActiveDocument
Selection.HomeKey Unit:=wdStory
RefList = .GetCrossReferenceItems(wdRefTypeNumberedItem)
For i = UBound(RefList) To 1 Step -1
Selection.HomeKey Unit:=wdStory
Ref = Trim(RefList(i))
RefNum = Split(Ref, " ")(0)
With Selection.Find
.Forward = True
.Wrap = wdFindStop
.Text = RefNum 'set Text before calling execute
Do While .Execute
Selection.InsertCrossReference ReferenceType:="Numbered item", _
ReferenceKind:=wdNumberFullContext, _
ReferenceItem:=CStr(i), _
InsertAsHyperlink:=True, _
IncludePosition:=False, _
SeparateNumbers:=False, _
SeparatorString:=" "
Loop
End With
Next i
End With
End Sub
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句