我正在尝试在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
答案 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,然后解析它。