我正在尝试在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 回答
注意:如果您将一个重用的对象分配给变量,那么您的代码将更有效(并且更容易阅读):
(1)Range.Information方法可以返回页码 . 就像是:
另一种选择并不是那么直接......我希望你的意思是 Headers 风格,而不是 Headers 风格 . 有一个内置书签,可以获得当前选择之前的 Headers . 这将是这样的:
(2)如果文件没有链接,那么你的机会很小 . VBA无法直接获得,这是肯定的 . 可能,某些东西可能存储在WordOpenXML中 . 您可以通过下载Open XML SDK Productivity Tool,在其中打开此类文档并检查Open XML的该部分来检查这一点 . 如果它在那里,那么你可以使用ils.Range.WordOpenXML在VBA中获取它来获取InlineShape的Open XML,然后解析它 .