簡體   English   中英

如何使用 Excel VBA 引用 MS Word 目錄頁碼?

[英]How to reference MS Word table of contents page numbers with Excel VBA?

我試圖在某些 VBA 代碼中使用 Word 中目錄對象右側的頁碼。 我可以使用GetCrossReferenceItems(wdRefTypeHeading)訪問存儲與這些頁碼關聯的文本的數組,但似乎無法獲取頁碼本身。 此處列出的 GetCrossReferenceItems 常量似乎都不相關。

在此處輸入圖片說明

有沒有辦法引用這些頁碼? 謝謝!

我不是“Worder”,所以這就是我想到的:

Function GetPagesNumber(doc As Document) As Long()
    Dim i As Long
    Dim myRng As Range
    Dim myHeadings As Variant

    With doc
        Set myRng = .Content
        myRng.Collapse Direction:=wdCollapseEnd

        myHeadings = .GetCrossReferenceItems(wdRefTypeHeading)
        ReDim pages(1 To UBound(myHeadings)) As Long
        For i = 1 To UBound(myHeadings)
            myRng.InsertCrossReference ReferenceType:=wdRefTypeHeading, ReferenceKind:=wdPageNumber, ReferenceItem:=i
            With .Paragraphs(ActiveDocument.Paragraphs.count).Range
                myRng.SetRange Start:=.Start, End:=.End - 1
            End With
            pages(i) = CLng(myRng.Text)
        Next i
    End With
    myRng.Delete
    GetPagesNumber = pages
End Function

使用如下:

Option Explicit
Sub main()
    Dim myPagesNumber() As Long

    myPagesNumber = GetPagesNumber(ActiveDocument) '<-- store index pages numbers in myPagesNumber 
End Sub

而不是使用;

myHeadings = .GetCrossReferenceItems(wdRefTypeHeading)

你也可以使用;

Dim myField As Field
Set myField = ActiveDocument.TablesOfContents(1).Range.Fields(1)
myHeadings = Split(myField.Result.Text, Chr(13))

這將返回一個字符串數組,數組的最后一個字符是標題的頁碼 使用pgnr = CInt(Right(myHeadings (i), Len(myHeadings (i)) - InStrRev(myHeadings (i), Chr(9))))獲取頁碼。

更好的是首先將myHeadings拆分為以Chr(13)作為分隔符的行然后以Chr(9)作為分隔符拆分為列。

所以整個目錄在一個數組中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM