首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在excel中调用GetCrossReferenceItems(wdRefTypeHeading)

问在excel中调用GetCrossReferenceItems(wdRefTypeHeading)
EN

Stack Overflow用户
提问于 2012-08-14 13:20:56
回答 1查看 1.3K关注 0票数 2

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

word模板中有不同的标题级别。我需要获得标题列表,以便我可以插入内容从excel到适当的位置。但是,GetCrossReferenceItems(wdRefTypeHeading)不起作用。

代码如下:

代码语言:javascript
复制
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)。

这一切为什么要发生?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-14 13:41:42

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

尝尝这个。(尝试并测试了)

代码语言:javascript
复制
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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11946173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档