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

単語文書にまったく同じコードを入れるとリストを取得できますが(ubound(~) = 0)、Excelに同じコードを入れるとリストは常に空になります。

なぜこれが起こるのですか?

4

1 に答える 1

3

あなたはMSWordと遅延バインディングしているため、MSExcelは何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 に答える