如何按位置顺序将Word文档中的所有书签元素列表获取到数组:VBA/Word

如何按位置顺序将Word文档中的所有书签元素列表获取到数组:VBA/Word,vba,ms-word,Vba,Ms Word,我想获取Word文档中的所有书签,然后将它们推送到数组中。书签必须按其在文档中的位置排序,而不是按名称排序 这是文档中的书签列表 [bm_s] (header) [bm_h] (title) [bm_a] (footer) 我希望书签保持其顺序,以便数组如下所示 array {bm_s, bm_h, bm_a, } 例如,它不应该像下面这样 array {bm_a, bm_h, bm_s, } 我从文档工作中获取了所有书签。在抓取并推送到数组时,我以随机顺序获取所有书签。Oki,所以

我想获取Word文档中的所有书签,然后将它们推送到数组中。书签必须按其在文档中的位置排序,而不是按名称排序

这是文档中的书签列表

[bm_s]  (header)
[bm_h]  (title)
[bm_a]  (footer)
我希望书签保持其顺序,以便数组如下所示

array {bm_s, bm_h, bm_a, }
例如,它不应该像下面这样

array {bm_a, bm_h, bm_s, }

我从文档工作中获取了所有书签。在抓取并推送到数组时,我以随机顺序获取所有书签。

Oki,所以我找到了答案

如果其他人有兴趣获取关于书签在文档中的位置的所有书签,则可以使用下面的方法

Dim objDoc As Document
Set objDoc = ActiveDocument

For i = 1 To objDoc.Bookmarks.Count
Debug.Print objDoc.Range.Bookmarks(i) 'here you can change the code to push the bookmarks in an array
Next i

万一还有人想知道;您可以访问MS Word文档的不同部分,如下所示:

ActiveDocument.StoryRanges(wdPrimaryHeaderStory).Bookmarks.Count
ActiveDocument.StoryRanges(wdMainTextStory).Bookmarks.Count
ActiveDocument.StoryRanges(wdPrimaryFooterStory).Bookmarks.Count

Oki,所以我想我可能过早下结论了,这段代码实际上获取了文档中的每个书签,但除了页眉和页脚中的书签。