Como converter todas as imagens incorporadas do Word em imagens vinculadas programaticamente
🔍 WiseChecker

Como converter todas as imagens incorporadas do Word em imagens vinculadas programaticamente

Ao inserir imagens diretamente em um documento do Word, o tamanho do arquivo cresce rapidamente, dificultando o compartilhamento ou a colaboração. Imagens incorporadas armazenam os dados completos da imagem dentro do arquivo .docx, enquanto imagens vinculadas referenciam um arquivo externo e mantêm o documento leve. Este artigo explica como converter cada imagem incorporada em uma imagem vinculada usando uma macro VBA, economizando espaço em disco e melhorando o desempenho do documento. Você aprenderá o código exato para executar, os pré-requisitos e o que fazer se a vinculação falhar.

Principais conclusões: converter imagens incorporadas em imagens vinculadas via VBA

  • Macro VBA no Word: Automatiza o processo de substituir cada imagem incorporada por uma versão vinculada usando o mesmo caminho do arquivo de imagem.
  • Arquivo > Opções > Central de Confiabilidade > Configurações da Central de Confiabilidade > Habilitar todas as macros: Necessário para executar a macro VBA sem avisos de segurança.
  • Método InlineShapes.AddPicture com LinkToFile:=True: Cria uma imagem vinculada que é atualizada quando o arquivo de origem é alterado.

ADVERTISEMENT

Como imagens incorporadas e vinculadas funcionam no Word

Ao inserir uma imagem através de Inserir > Imagens > Este Dispositivo, o Word incorpora os dados completos da imagem no documento. O tamanho do documento aumenta aproximadamente pelo tamanho de cada imagem. Isso torna o envio por e-mail ou upload mais lento, e editar a imagem original posteriormente não atualiza a cópia no Word.

Já uma imagem vinculada armazena apenas o caminho do arquivo de origem da imagem. O documento permanece pequeno e, se você modificar o arquivo de imagem de origem, o Word pode atualizar a imagem vinculada automaticamente (desde que o link seja mantido). A desvantagem é que o arquivo de imagem deve permanecer no mesmo local; se você movê-lo, o link é quebrado.

O Word não oferece um comando nativo para converter em lote imagens incorporadas em vinculadas. Você deve usar uma macro VBA para substituir cada forma incorporada por uma versão vinculada. A macro lê o caminho do arquivo de imagem original da imagem incorporada (se disponível), exclui a forma incorporada e insere uma nova imagem vinculada na mesma posição.

Pré-requisitos para executar a macro

Antes de executar a macro de conversão, verifique o seguinte:

  • Todas as imagens incorporadas foram originalmente inseridas de arquivos em seu computador ou unidade de rede. Imagens copiadas da web ou coladas da área de transferência não possuem um caminho de arquivo de origem e não podem ser vinculadas.
  • Os arquivos de imagem originais ainda existem em seus caminhos originais. Se você os moveu ou excluiu, a macro falhará para essas imagens.
  • Você tem permissão para executar macros no Word. Vá em Arquivo > Opções > Central de Confiabilidade > Configurações da Central de Confiabilidade > Configurações de Macro e selecione Habilitar todas as macros. Reverta essa configuração após terminar.

Passo a passo da macro para converter imagens incorporadas em vinculadas

Siga estas etapas para criar e executar a macro VBA. A macro processa todos os InlineShapes (imagens ancoradas ao texto) e Shapes (imagens flutuantes) no documento ativo.

  1. Abra o editor VBA
    Pressione Alt+F11 no Word. A janela Microsoft Visual Basic for Applications é aberta.
  2. Insira um novo módulo
    No painel Project Explorer, clique com o botão direito em Normal ou no projeto do documento atual, escolha Inserir e depois Módulo. Uma janela de código em branco aparece.
  3. Cole o código da macro
    Copie o código a seguir e cole na janela do módulo:
Sub ConvertEmbeddedToLinked()
    Dim shp As InlineShape
    Dim shp2 As Shape
    Dim imgPath As String
    Dim imgWidth As Single
    Dim imgHeight As Single
    Dim rng As Range
    
    Application.ScreenUpdating = False
    
    ' Processa InlineShapes (imagens na linha com texto)
    For Each shp In ActiveDocument.InlineShapes
        If shp.Type = wdInlineShapePicture Then
            On Error Resume Next
            imgPath = shp.LinkFormat.SourcePath & "\" & shp.LinkFormat.SourceName
            If Err.Number <> 0 Then
                ' Sem informações de link; pula se incorporada sem origem
                Err.Clear
                GoTo NextInline
            End If
            On Error GoTo 0
            
            imgWidth = shp.Width
            imgHeight = shp.Height
            Set rng = shp.Range
            shp.Delete
            
            Set shp = rng.InlineShapes.AddPicture( _
                FileName:=imgPath, _
                LinkToFile:=True, _
                SaveWithDocument:=False, _
                Range:=rng)
            shp.Width = imgWidth
            shp.Height = imgHeight
        End If
NextInline:
    Next shp
    
    ' Processa Shapes flutuantes
    For Each shp2 In ActiveDocument.Shapes
        If shp2.Type = msoPicture Then
            On Error Resume Next
            imgPath = shp2.LinkFormat.SourcePath & "\" & shp2.LinkFormat.SourceName
            If Err.Number <> 0 Then
                Err.Clear
                GoTo NextShape
            End If
            On Error GoTo 0
            
            imgWidth = shp2.Width
            imgHeight = shp2.Height
            Set rng = shp2.Anchor
            shp2.Delete
            
            Set shp2 = ActiveDocument.Shapes.AddPicture( _
                FileName:=imgPath, _
                LinkToFile:=True, _
                SaveWithDocument:=False, _
                Anchor:=rng)
            shp2.Width = imgWidth
            shp2.Height = imgHeight
        End If
NextShape:
    Next shp2
    
    Application.ScreenUpdating = True
    MsgBox "Conversão concluída.", vbInformation
End Sub
  1. Execute a macro
    Pressione F5 para executar a macro, ou vá em Executar > Executar Sub/UserForm. O Word processa cada imagem e a substitui por uma versão vinculada. Uma caixa de mensagem confirma a conclusão.
  2. Salve o documento
    Pressione Ctrl+S para salvar o documento. O Word agora armazena apenas os caminhos das imagens, não os dados das imagens. O tamanho do arquivo deve ser significativamente menor.

ADVERTISEMENT

Se a macro pular algumas imagens ou retornar erros

A macro pode pular imagens ou produzir erros em cenários específicos. Abaixo estão os problemas mais comuns e como resolvê-los.

Algumas imagens não foram convertidas

Imagens coladas da área de transferência, copiadas de uma página web ou inseridas via arrastar e soltar de um e-mail não possuem um caminho de arquivo de origem. A macro não consegue determinar onde o arquivo original reside. Para converter essas, você deve reinserir manualmente cada imagem usando Inserir > Imagens > Este Dispositivo e então executar a macro novamente.

Erro: Run-time error 5174 — Arquivo não encontrado

Este erro significa que o arquivo de imagem original não existe mais no caminho armazenado. Restaure o arquivo para seu local original ou atualize o caminho na macro. Você pode verificar o caminho de uma imagem específica clicando com o botão direito nela, selecionando Formatar Imagem e olhando na guia Texto Alternativo (alguns metadados podem mostrar o caminho).

Imagens vinculadas mostram um X vermelho ou ícone de imagem quebrada

Se você mover ou renomear os arquivos de imagem de origem após a conversão, o Word não consegue exibir a imagem vinculada. Para corrigir, vá em Arquivo > Informações > Editar Links para Arquivos, selecione o link quebrado e clique em Alterar Origem para apontar para o novo local do arquivo.

Comparação: Imagens incorporadas vs vinculadas no Word

Item Imagem Incorporada Imagem Vinculada
Tamanho do arquivo do documento Grande (inclui dados completos da imagem) Pequeno (armazena apenas o caminho do arquivo)
Exigência de origem da imagem Nenhuma (imagem é autocontida) Arquivo original deve permanecer acessível
Atualização quando a origem muda Reinserção manual necessária Automática via Editar Links para Arquivos
Portabilidade Funciona em qualquer lugar sem arquivos extras Quebrada se os arquivos de origem forem movidos
Método de conversão em lote Macro VBA (este artigo) Macro VBA (este artigo)

Agora você pode converter todas as imagens incorporadas em imagens vinculadas em uma única execução de macro, reduzindo o tamanho do documento e permitindo atualizações automáticas de imagem. Após a conversão, considere usar Arquivo > Informações > Editar Links para Arquivos para verificar se todos os links são válidos. Para controle avançado, modifique a macro para pular imagens abaixo de um determinado tamanho ou registrar imagens ignoradas em um documento separado.

ADVERTISEMENT