2016-10-13 3 views
0

Я пытаюсь использовать номера страниц в правой части объекта содержимого в Word в каком-то коде VBA. Я могу получить доступ к массиву, хранящему текст, связанный с этими номерами страниц, с помощью GetCrossReferenceItems(wdRefTypeHeading), но, похоже, не может попасть на номера страниц. Ни одна из констант GetCrossReferenceItems, перечисленных here, не представляется актуальной.Как ссылаться на номера страниц оглавления MS Word с помощью Excel VBA?

enter image description here

Есть ли способ, чтобы ссылаться на эти номера страниц? Благодаря!

ответ

1

Я не "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 
+0

@superfluous, вы получите через него? – user3598756

Смежные вопросы