Word Doc中嵌入式Excel文件的页码或页眉信息?

时间:2015-12-17 22:09:59

标签: excel vba ms-word ole

我正在尝试在MS Word文档中搜索嵌入的Excel文件,并将它们保存到其他位置。

1)我想记录嵌入文件位于Word Doc中的页码和/或部分名称(基于标题样式)。我该如何提取这些信息?

2)无论如何都要获取嵌入式Excel文件的原始文件名?

以下是我用来搜索嵌入文件的代码。本来 解决首先在此处提供的代码:Extract Embeded Excel Workseet Data

Sub TestMacro2()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = wdAlertsNone

    Dim lNumShapes As Long
    Dim lShapeCnt As Long
    Dim xlApp As Object
    Dim wrdActDoc As Document
    Dim iRow As Integer
    Dim iCol As Integer

    Set wrdActDoc = ActiveDocument
    For lShapeCnt = 1 To wrdActDoc.InlineShapes.Count
        If wrdActDoc.InlineShapes(lShapeCnt).Type = wdInlineShapeEmbeddedOLEObject Then
            If wrdActDoc.InlineShapes(lShapeCnt).OLEFormat.ProgID = "Excel.Sheet.8" Then
                wrdActDoc.InlineShapes(lShapeCnt).OLEFormat.Edit
                Set xlApp = GetObject(, "Excel.Application")
                cpath = "location of interest"
                xlApp.Workbooks(1).SaveAs cpath & " " & lShapeCnt
                xlApp.Workbooks(1).Close
                xlApp.Quit
                Set xlApp = Nothing
            End If
        End If
    Next lShapeCnt
End Sub

1 个答案:

答案 0 :(得分:0)

注意:如果您将一个重用的对象分配给变量,那么您的代码将更有效(并且更容易阅读):

Dim ils as Word.InlineShape
Set ils = wrdActDoc.InlineShapes(lShapeCnt)

(1)Range.Information方法可以返回页码。类似的东西:

Dim pageNumber as Long
pageNumber = ils.Range.Information(wdwdActiveEndPageNumber)

另一种选择并不是那么直接...我希望你真的是指标题风格,而不是标题风格。有一个内置书签,可以获得当前选择之前的标题。那将是这样的:

Dim secName as String
ils.Range.Select
secName = ActiveDocument.Bookmarks("\HeadingLevel").Range.Text

(2)如果文件没有链接,那么你的机会很小。 VBA无法直接获得,这是肯定的。可能,某些东西可能存储在WordOpenXML中。您可以通过下载Open XML SDK Productivity Tool,在其中打开此类文档并检查Open XML的该部分来检查这一点。如果它在那里你可以使用ils.Range.WordOpenXML在VBA中获取它来获取InlineShape的Open XML,然后解析它。