首页 文章

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

提问于
浏览
0

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

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

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

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

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

    (1)Range.Information方法可以返回页码 . 就像是:

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

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

    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,然后解析它 .

相关问题