VBA(?如何提取链接和插入的图像的文件名 - Word 2013



我们在Word文档(.docx(中插入和链接图片(从文件.emf插入图片(。我们的文档和图形文件存储在我们的网络驱动器上。然后,我们将文档提供给作者进行处理。文档中的图片对作者很有用。

如何以编程方式和全局方式(文档明智,而不是批处理文档(:提取链接和插入的图片的文件名(不带文件扩展名(?

我们有一个工具可以将Word文档.docx导出到.XML。

PS:我在谷歌上搜索了可能/潜在的 VBA 解决方案。到目前为止,我收集:

  1. 无法确定/检查图片是否已正确/正确链接并插入.docx
  2. 无法查看源代码(至少我尝试了 Alt+ F9/Shift+F9(

还是宏/vba不是要走的路?

规格:字 2013. 64 位 图形格式。电动势 图形和 Word 文档存储在网络驱动器上 图形未通过"包含图片"字段插入和链接。

若要获取浮动和内联链接图片的列表,可以使用如下代码:

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

请注意,上面的代码只搜索文档正文;不搜索页眉、页脚等。列表输出在文档末尾。

使用文本环绕设置格式的图形属于Shapes集合。它们不能使用IncludePicture来管理链接 - 它们"存在于"文档的不同层中,而不是文本和域代码。因此,访问或管理此信息的唯一方法是通过对象模型(例如 VBA(或通过 Word Open XML。

对象模型为Shape对象提供LinkFormat属性,用于查询和管理链接信息。除此之外,还有用于断开链接、获取文件名、文件路径和完整文件信息的属性和方法。

下面循环文档主体中的所有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

相关内容

  • 没有找到相关文章

最新更新