You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA如何获取wdRestartSection规则下的Word尾注实际编号

关于尾注实际编号属性的问题

Word VBA原生对象模型没有单独存储尾注实际显示编号的独立属性,你测试时Endnote.Reference.Text返回空是正常现象:尾注的引用标记是Word自动生成的域内容,不属于普通文本范围,直接读取Text属性拿不到编号值。

如果你需要直接获取任意尾注的实际显示编号(适配所有编号规则,包括按节重置、按页重置、全局连续),可以调用Information方法读取编号值,代码示例如下:

For Each objEndnote In ActiveDocument.Endnotes
    ' wdNumberValue 是内置常量,未引用类型库时可以直接写对应数值23
    Debug.Print objEndnote.Reference.Information(wdNumberValue)
Next

按节遍历尾注的实现

支持按节遍历尾注,每节的Range.Endnotes集合就是当前节包含的所有尾注,你可以直接遍历该集合自行统计节内编号,适配wdRestartSection的编号规则,完整实现参考代码如下:

Sub 尾注转纯文本_适配按节重置编号()
    Dim curSection As Section
    Dim curEndnote As Endnote
    Dim secNoteNum As Integer
    Dim allEndnoteContent As String
    
    ' 遍历文档所有节
    For Each curSection In ActiveDocument.Sections
        secNoteNum = 0
        ' 遍历当前节所有尾注
        For Each curEndnote In curSection.Range.Endnotes
            secNoteNum = secNoteNum + 1
            ' 替换正文里的尾注引用为纯文本编号,可按需调整格式
            curEndnote.Reference.Text = "[" & secNoteNum & "]"
            ' 收集尾注内容,可按需调整存储规则
            allEndnoteContent = allEndnoteContent & "第" & curSection.Index & "节 [" & secNoteNum & "] " & curEndnote.Range.Text & vbCrLf
        Next
    Next
    
    ' 输出收集到的所有尾注内容到正文末尾,可按需调整插入位置
    ActiveDocument.Content.InsertAfter vbCrLf & "=== 尾注内容 ===" & vbCrLf & allEndnoteContent
    ' 可选操作:替换完成后删除原尾注
    ' ActiveDocument.Endnotes.Delete
End Sub

内容的提问来源于stack exchange,提问作者Rob Napier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 13:36:01