在Excel中调用GetCrossReferenceItems(wdRefTypeHeading)

我正在尝试使用模板将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文档中,我可以得到这个列表,但是如果我把相同的代码放在一个excel中,这个列表总是空的(ubound(~) = 0)

为什么会发生?

您是晚期绑定与MS Word,因此MS Excel不能理解什么wdRefTypeHeading是。 对于MS Excel,该variables的值为0而对于MS Word,该常量的值为1

尝试这个。 ( 试验和testing

 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