我们在Word文档(.docx)中插入和链接图片(从文件.emf插入图片)。我们的文档和图形文件存储在我们的网络驱动器上。然后,我们将文档提供给作者进行处理。文件中的图片对作者很有用。
如何以编程方式和全局方式(文档明智,而不是批处理文档):提取链接和插入图片的文件名(没有文件扩展名)?
我们有一个工具可以将Word文档.docx导出到.XML。
Ps:我搜索了可能/潜在的VBA解决方案。到目前为止,我收集了:
或者是宏/ vba不是要走的路?
功能 Word 2013。 64位 图形格式。电动势 图形和word文档存储在网络驱动器上 图形未通过INCLUDEPICTURE字段插入和链接。
答案 0 :(得分:0)
使用文本换行格式化的图形属于Shapes
集合。这些无法使用IncludePicture
来管理链接 - 他们"生活"在文档的不同层中,而不是文本和字段代码。因此,访问或管理此信息的唯一方法是通过对象模型(例如VBA)或通过Word Open XML。
对象模型为LinkFormat
对象提供Shape
属性,以查询和管理链接信息。除此之外,还有一些属性和方法可以打破链接,获取文件名,文件路径和完整的文件信息。
以下循环文档主体中的所有Shape
个对象,并测试该类型是否为链接图片。如果是,则将完整文件信息分配给sSource
。
Sub GetSourceFromLinkedShape()
Dim shp As Word.Shape
Dim sSource As String
For Each shp In ActiveDocument.shapes
If shp.Type = msoLinkedPicture Then
sSource = shp.LinkFormat.SourceFullName
End If
Next
End Sub
答案 1 :(得分:0)
要获得浮动和内嵌链接图片的列表,您可以使用以下代码:
Sub Demo()
Dim Shp As Shape, iShp As InlineShape, StrOut As String
With ActiveDocument.Range
StrOut = "Linked Shapes:"
For Each Shp In .ShapeRange
With Shp
If .Type = msoLinkedPicture Then
StrOut = StrOut & Chr(11) & Split(.LinkFormat.SourceName, ".")(0)
End If
End With
Next
If InStr(StrOut, Chr(11)) = 0 Then StrOut = StrOut & " None."
.InsertAfter vbCr & StrOut
StrOut = "Linked InlineShapes:"
For Each iShp In .InlineShapes
With iShp
If .Type = wdInlineShapeLinkedPicture Then
StrOut = StrOut & Chr(11) & Split(.LinkFormat.SourceName, ".")(0)
End If
End With
Next
If InStr(StrOut, Chr(11)) = 0 Then StrOut = StrOut & " None."
.InsertAfter vbCr & StrOut
End With
End Sub
请注意,上述代码仅搜索文档正文;不是页眉,页脚等。列表在文档的末尾输出。