使用 wdRestartSection NumberingRule 查找尾注编号
Finding Endnote number with wdRestartSection NumberingRule
我正在编写一个 VBA 脚本来将尾注转换为纯文本。当尾注具有连续编号时,这非常简单(将所有尾注复制到文本末尾,使用索引对其编号,并将所有参考文献替换为索引)。
然而,在这种情况下,尾注编号配置为重置每个部分 (NumberingRule=wdRestartSection
)。这意味着索引不是数字。我尝试使用 endnote.Reference.Text
获取号码,但这是空的。我没有在对象模型中的任何地方找到每个尾注的实际编号。
是否有此信息?
有没有一种方法可以按部分而不是整个文档遍历尾注,以便我自己跟踪索引?
我目前正在尝试以这种方式获取它:
For Each objEndnote In ActiveDocument.Endnotes
print(objEndnote.Reference.Text)
Next
这只会打印空字符串。
看起来每个部分都没有编号 - 很奇怪。所以每个section你得自己算:
Option Explicit
Sub getAllEndnotesWithNumbers()
Dim e As Endnote, section As Long, eCounter As Long
For Each e In ThisDocument.Endnotes
If section <> endnoteSection(e) Then
section = endnoteSection(e)
eCounter = 1
Debug.Print "--- Section " & section & " ----------"
End If
Debug.Print eCounter, e.Range.Text
eCounter = eCounter + 1
Next
End Sub
Private Function endnoteSection(e As Endnote) As Long
endnoteSection = e.Range.Sections(1).Index
End Function
我正在编写一个 VBA 脚本来将尾注转换为纯文本。当尾注具有连续编号时,这非常简单(将所有尾注复制到文本末尾,使用索引对其编号,并将所有参考文献替换为索引)。
然而,在这种情况下,尾注编号配置为重置每个部分 (NumberingRule=wdRestartSection
)。这意味着索引不是数字。我尝试使用 endnote.Reference.Text
获取号码,但这是空的。我没有在对象模型中的任何地方找到每个尾注的实际编号。
是否有此信息?
有没有一种方法可以按部分而不是整个文档遍历尾注,以便我自己跟踪索引?
我目前正在尝试以这种方式获取它:
For Each objEndnote In ActiveDocument.Endnotes
print(objEndnote.Reference.Text)
Next
这只会打印空字符串。
看起来每个部分都没有编号 - 很奇怪。所以每个section你得自己算:
Option Explicit
Sub getAllEndnotesWithNumbers()
Dim e As Endnote, section As Long, eCounter As Long
For Each e In ThisDocument.Endnotes
If section <> endnoteSection(e) Then
section = endnoteSection(e)
eCounter = 1
Debug.Print "--- Section " & section & " ----------"
End If
Debug.Print eCounter, e.Range.Text
eCounter = eCounter + 1
Next
End Sub
Private Function endnoteSection(e As Endnote) As Long
endnoteSection = e.Range.Sections(1).Index
End Function