2012-08-14 10 views
2

我嘗試使用模板將excel內容導出到word文檔中。在Excel中調用GetCrossReferenceItems(wdRefTypeHeading)

單詞模板中有不同的標題級別。我需要獲取標題列表,以便將excel中的內容插入到正確的位置。但是,GetCrossReferenceItems(wdRefTypeHeading)不起作用。

下面是代碼:

Private Sub CommandButton1_Click() 
    Set wdObj = CreateObject("Word.Application") 
    wdObj.Visible = True 
    wdObj.Documents.Open FileName:="test.dotx" 
    Set wdDoc = wdObj.ActiveDocument 
    astrHeadings = wdDoc.GetCrossReferenceItems(wdRefTypeHeading) 
    MsgBox ("headings #" & UBound(astrHeadings)) 'correct number if in word, 0 if in excel 
    wdObj.Quit 
End Sub 

如果我把完全相同的代碼在Word文檔中,我可以得到的名單,但名單將永遠空(ubound(~) = 0)如果我把相同的代碼在一個excel 。

爲什麼會出現這種情況?

回答

3

你是晚了MS Word的綁定,因此MS Excel不明白wdRefTypeHeading是什麼。對於MS Excel,該變量的值爲0,而對於MS Word,該常量的值爲1

試試這個。 (TRIED AND TESTED

Const wdRefTypeHeading = 1 

Sub Sample() 
    Dim wdObj As Object, wdDoc As Object 
    Dim FlName As String 
    Dim astrHeadings 

    Set wdObj = CreateObject("Word.Application") 
    wdObj.Visible = True 
    FlName = "C:\test.dotx" 
    Set wdDoc = wdObj.Documents.Open(FlName) 

    astrHeadings = wdDoc.GetCrossReferenceItems(wdRefTypeHeading) 

    MsgBox ("headings #" & UBound(astrHeadings)) 

    wdObj.Quit 

    '~~> Close and Clean Up 
    Set wdDoc = Nothing 
    Set wdObj = Nothing 
End Sub 
+0

謝謝,非常感謝。有用!對不起,我是這個vba的新手。謝謝! – EmilyR 2012-08-14 05:54:50

+0

歡迎您:) – 2012-08-14 05:55:18

+0

Hi @ user1597083。如果這篇文章回答你的問題,請將其標記爲解決方案(選中標記留在帖子中)。這對你,Siddharth和整個社區都有好處。 – CaBieberach 2012-08-14 06:12:02