在 MS Word 2010 中以编程方式断开图片链接

在 MS Word 2010 中以编程方式断开图片链接

我有一个 Word 文档,里面有图片链接。我想将它们嵌入到 Word 文档中,但我不想手动操作。

手动转到:文件 --> 编辑文件链接 --> 选择并点击“断开链接”就可以完成我想要的操作。

我找到了一些用于断开字段链接的 VBA 代码,但这无助于断开图片链接。这是我尝试的代码:

For Each objField In ActiveDocument.Fields
  If Not objField.LinkFormat Is Nothing Then
    objField.LinkFormat.Update
    objField.LinkFormat.BreakLink
    ActiveDocument.UndoClear
  End If
Next

当我在文档中点击Alt+F9来显示字段时,图片没有任何变化,但其他字段(链接等)会展开/显示。因此,我假设这些图片链接不是“字段”。

我怎样才能在 VBA 中断开这些图片链接?

編輯譯註釋Word 文档基本上是一个 html 文件。这就是在 Word 中打开 .html 文件后得到的结果。

答案1

由于 Word 文档实际上是在 Word 中打开的 html 文档,因此它不包含用于标识字段的特定于 Word 的标记。因此,GUI 功能可以工作,但问题中详述的 vba 解决方案却不行。解决方案是首先使用新名称保存 Word 文档(从而生成 Word 标记),然后运行 ​​breakLinks 宏。

用于保存文档的宏:

Sub saveAsDoc()
    Dim newName As String
    newName = ActiveDocument.Path & "\" & "fix_" & ActiveDocument.Name
    ActiveDocument.SaveAs2 FileName:=newName, FileFormat:=wdFormatDocument
End Sub

断开链接的宏:

Sub breakLinks()
For Each objField In ActiveDocument.Fields
  If Not objField.LinkFormat Is Nothing Then
    objField.LinkFormat.Update
    objField.LinkFormat.BreakLink
    ActiveDocument.UndoClear
  End If
Next
End Sub

应从外部脚本执行的主宏。displayAlerts 是为了确保没有弹出窗口。

Sub theTrick()
    Application.DisplayAlerts = False
    Call saveAsDoc
    Call breakLinks
    ActiveDocument.save
    Application.DisplayAlerts = True
End Sub

相关内容