在我的简单测试中,以下内容对我很有用。
因为尾注的交叉引用
不
默认情况下使用上标搜索上标不是可靠的标准。另外,其他的东西也可以上标。交叉引用由Word使用
Ref
领域
,这些是指
书签
当
Insert cross-reference
使用命令。
这样的书签以
_Ref
后面跟着一个长数字。尾注的字段使用
NoteRef
.因此,为终结符引用获取书签名称是有意义的(可能不止一个),检查它们是否使用
_参考
模式然后搜索文档以使用书签。
为了“找到”一个字段编码模式
^d
使用。因此,搜索项是,后跟字段代码(noteref)的名称和书签名称。如果搜索成功,则删除字段代码,并在此位置写入尾注文本。然后搜索从这一点继续到文档的结尾。
因此,代码通过所有的尾注循环,得到每个人的引用,获取所有的书签,循环书签,检查名称(如上所述),并搜索NoTeEF字段(如上所述)。
最后,原始尾注引用被尾注文本替换。
Sub WriteEndNoteToAllEndNoteRefs()
Dim sEndNoteText As String
Dim rngEndNoteRef As Word.Range, rngSearch As Word.Range
Dim doc As Word.Document
Dim en As Word.Endnote
Dim bkm As Word.Bookmark
Dim bFound As Boolean
Set doc = ActiveDocument
For Each en In doc.Endnotes
Set rngEndNoteRef = en.Reference
sEndNoteText = en.Range.Text
For Each bkm In rngEndNoteRef.Bookmarks
If Left(bkm.Name, 4) = "_Ref" Then
Set rngSearch = doc.content
rngSearch.TextRetrievalMode.IncludeFieldCodes = True
Do
With rngSearch.Find
.Text = "^d NoteRef " & bkm.Name
.wrap = wdFindStop
bFound = .Execute
If bFound Then
rngSearch.Fields(1).Delete
rngSearch.Text = sEndNoteText
rngSearch.End = doc.content.End
End If
End With
Loop While bFound
End If
Next
rngEndNoteRef = sEndNoteText
Next
End Sub