Quebrar link para imagem programaticamente no MS Word 2010

3

Eu tenho um documento do Word com imagens vinculadas. Eu quero incorporá-los ao documento do word, mas não quero fazer isso manualmente.

Vai manualmente para: Arquivo - > editar links para arquivos - > selecionar e clicar em "quebrar link" faz exatamente o que eu quero fazer.

Eu encontrei alguns códigos VBA para quebrar links para campos, mas isso não ajuda a quebrar os links para minhas fotos. Aqui está o código que eu tentei:

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

Quando eu clico em Alt + F9 no meu documento para exibir campos, nada acontece para minhas fotos, mas outros campos (links etc) são expandidos / exibidos. Presumo, portanto, que esses links de imagem são algo mais do que "campos".

Como posso quebrar esses links de imagem no VBA?

Editar nota O documento do word é basicamente um arquivo html. Isso é o que você obtém abrindo um arquivo .html no Word.

    
por exalt 12.09.2013 / 10:34

1 resposta

1

Como o documento do Word era, na verdade, um documento html aberto no Word, ele não incluía marcações específicas de palavras para identificar os campos. Como resultado, a funcionalidade da GUI funcionou, mas não a solução vba, conforme detalhado na pergunta. A solução foi primeiro salvar o documento do Word com um novo nome (gerando assim a marcação de palavra) e, em seguida, executar a macro breakLinks.

Macro para salvar o documento:

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

Macro para quebrar links:

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

Macro principal que deve ser executada a partir de um script extralar. O displayAlerts é para garantir que não haja pop-us.

Sub theTrick()
    Application.DisplayAlerts = False
    Call saveAsDoc
    Call breakLinks
    ActiveDocument.save
    Application.DisplayAlerts = True
End Sub
    
por 19.09.2013 / 14:06