Macro do Word VBA para inserir texto alternativo abaixo das imagens
Sub InsertAltTextBelowImages()
For i = ActiveDocument.Shapes.Count To 1 Step -1
If ActiveDocument.Shapes(i).Type = msoPicture Then
ActiveDocument.Shapes(i).ConvertToInlineShape
End If
Next i
For Each img In ActiveDocument.InlineShapes
If img.Type = wdInlineShapePicture Then
img.Range.InsertAfter (vbCrLf & img.AlternativeText & vbCrLf)
End If
Next
End Sub
Dois problemas
-
O Word conhece dois tipos de imagens: imagens embutidas e imagens flutuantes. As imagens flutuantes não têm uma propriedade intervalo , portanto, o Word não sabe a qual parágrafo a imagem realmente pertence. Você pode converter (
ConvertToInlineShape
) imagens flutuantes em imagens inline normais. Mas isso vai atrapalhar seu layout -
Você não pode simplesmente inserir o texto "abaixo" como você disse. E se não houver linha abaixo da imagem? Você precisa inserir pelo menos duas quebras de página (
vbCrLf
) junto com o texto alternativo. Isso estraga o layout do Word novamente
Veja minhas capturas de tela de comparação sobre como minha macro afeta o layout
Antes