2

我正在尝试使用模板将 excel 内容导出到 word 文档中。

单词模板中有不同的标题级别。我需要获取标题列表,以便可以将 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 中,列表将始终为空。

为什么会这样?

4

1 回答 1

3

您与 MS Word 绑定较晚,因此 MS Excel 无法理解是什么wdRefTypeHeading。对于 MS Excel,该变量的值为 ,0而对于 MS Word,该常量的值为1

尝试这个。(经过试验和测试

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
于 2012-08-14T05:41:42.370 回答