Como Redimensionar Todas as Imagens de um Documento do Word para a Mesma Largura em Pixels Usando VBA
🔍 WiseChecker

Como Redimensionar Todas as Imagens de um Documento do Word para a Mesma Largura em Pixels Usando VBA

Redimensionar manualmente cada imagem em um documento longo do Word para uma largura uniforme em pixels é tedioso e propenso a erros. Você pode precisar que todas as capturas de tela, logotipos ou diagramas tenham uma largura específica para um relatório ou proposta consistente. O Word não inclui uma ferramenta interna de redimensionamento em lote para imagens. Este artigo explica como usar uma macro do Visual Basic for Applications para redimensionar cada imagem do seu documento para a largura exata em pixels que você especificar.

Principais Conclusões: Redimensionar Todas as Imagens para uma Largura Uniforme Usando uma Macro VBA

  • Alt + F11 (abrir editor VBA) e depois Insert > Module: Abre o ambiente onde você cola e executa a macro de redimensionamento.
  • Propriedade InlineShape.Width: A propriedade VBA que controla a largura de imagens embutidas no texto.
  • Propriedade Shape.Width: A propriedade VBA que controla a largura de imagens flutuantes não ancoradas ao texto.

ADVERTISEMENT

Como a Macro VBA Redimensiona Imagens e o Que Você Precisa Antes de Executá-la

A macro percorre todas as formas e formas embutidas no documento ativo do Word. Para cada imagem encontrada, ela define a propriedade Width com um valor que você define em pixels. A macro não altera a altura proporcionalmente, a menos que você adicione uma linha separada para travar a proporção. Por padrão, as imagens do Word mantêm a proporção original quando você define apenas a largura. A macro funciona em todos os tipos de imagem: JPEG, PNG, GIF, BMP e TIFF. Ela não afeta gráficos, SmartArt ou objetos incorporados, pois esses não são tipos de imagem InlineShape ou Shape.

Antes de executar a macro, feche todos os outros documentos do Word para evitar alterações acidentais. Salve seu documento com um novo nome como backup. A macro modifica apenas o documento atual. Você precisa habilitar macros no Word. Vá em File > Options > Trust Center > Trust Center Settings > Macro Settings e selecione Enable all macros. Após terminar, reverta essa configuração para Disable all macros with notification por segurança.

Passos para Criar e Executar a Macro de Redimensionamento de Imagens no Word

  1. Abra o Editor Visual Basic
    Pressione Alt + F11 no teclado. A janela do editor VBA será aberta. Se você vir o painel Immediate na parte inferior, pode ignorá-lo.
  2. Insira um novo módulo
    Na barra de menu, clique em Insert > Module. Uma janela de código em branco aparece. É aqui que você cola o código da macro.
  3. Cole o código da macro
    Copie o código a seguir e cole-o na janela do módulo:
    Sub ResizeAllImagesToWidth()
        Dim shp As Shape
        Dim inShp As InlineShape
        Dim targetWidth As Single
        
        targetWidth = InputBox("Enter the desired width in pixels:", "Image Width")
        If targetWidth <= 0 Then Exit Sub
        
        ' Redimensionar formas flutuantes
        For Each shp In ActiveDocument.Shapes
            If shp.Type = msoPicture Then
                shp.LockAspectRatio = msoTrue
                shp.Width = targetWidth
            End If
        Next shp
        
        ' Redimensionar formas embutidas
        For Each inShp In ActiveDocument.InlineShapes
            If inShp.Type = wdInlineShapePicture Then
                inShp.LockAspectRatio = msoTrue
                inShp.Width = targetWidth
            End If
        Next inShp
        
        MsgBox "All images resized to " & targetWidth & " pixels wide."
    End Sub
    
  4. Execute a macro
    Pressione F5 no teclado enquanto o cursor estiver dentro do código da macro. Uma caixa de diálogo aparecerá solicitando a largura desejada. Digite um número como 300 e clique em OK. A macro redimensionará todas as imagens do documento para essa largura.
  5. Salve o documento
    Pressione Ctrl + S para salvar seu documento. Se quiser que a macro esteja disponível em outros documentos, salve o arquivo como um documento habilitado para macro (.docm) ou salve a macro no modelo Normal.dotm.

ADVERTISEMENT

Se a Macro Não Funcionar como Esperado

A macro não redimensiona todas as imagens

Algumas imagens podem estar agrupadas. A macro processa apenas formas de nível superior. Para redimensionar imagens agrupadas, desagrupe-as primeiro ou adicione um loop que verifique GroupItems. Além disso, a macro ignora imagens em cabeçalhos, rodapés e caixas de texto. Para incluí-las, você deve adicionar código adicional para percorrer HeaderFooter.Shapes e HeaderFooter.InlineShapes.

A macro altera a largura, mas a altura parece errada

A macro trava a proporção com LockAspectRatio = msoTrue. Se a altura ainda parecer distorcida, a imagem pode ser uma imagem vinculada ou um espaço reservado que não suporta o travamento da proporção. Converta imagens vinculadas em incorporadas quebrando o link em File > Info > Edit Links to Files.

A macro exibe o erro "Run-time error '13': Type mismatch"

Isso ocorre se você inserir um valor não numérico na caixa de entrada. Feche a caixa de diálogo de erro, pressione F5 novamente e digite um número inteiro. Se o erro persistir, verifique se seu documento contém pelo menos uma imagem. A macro é executada com segurança em documentos sem imagens, mas exibirá uma mensagem informando que foi concluída.

Macro VBA vs Redimensionamento Manual: Principais Diferenças

Item Macro VBA Redimensionamento Manual
Tempo para 50 imagens Menos de 2 segundos 5 a 10 minutos
Consistência Todas as imagens com a mesma largura exata em pixels Possíveis pequenas variações ao arrastar
Habilidade necessária do usuário Familiaridade básica com o editor VBA Nenhuma habilidade especial
Suporte a tipos de documento Apenas arquivos .docm (habilitados para macro) Qualquer documento do Word (.docx, .doc)
Capacidade de desfazer Uma etapa de desfazer após a execução da macro Desfazer cada redimensionamento individualmente

Agora você pode redimensionar todas as imagens de um documento do Word para a mesma largura em pixels em segundos usando uma macro VBA simples. Comece testando a macro em uma cópia do seu documento com um valor de largura pequeno, como 200 pixels. Para controle avançado, modifique a macro para também definir uma altura fixa ou para pular imagens que já são menores que a largura desejada. Salve a macro no seu modelo Normal.dotm para acessá-la de qualquer documento.

ADVERTISEMENT