Modifique o código VB no MS Word para alterar a quebra de texto da imagem

2

Neste código para redimensionamento de imagens:

Sub resize()
Dim i As Long
With ActiveDocument
  For i = 1 To .InlineShapes.Count
        With .InlineShapes(i)
            .ScaleHeight = 50
            .ScaleWidth = 50
        End With
    Next i
End With
End Sub

Eu quero incluir um comando para alterar a quebra de texto do padrão (inline) para 'top and bottom'. Qual código eu preciso adicionar?

    
por MotoTango 17.07.2018 / 21:17

1 resposta

0

Uma forma in-line não tem texto de quebra automática, apenas formas regulares, portanto, é necessário converter a forma in-line. Ao fazer isso de uma maneira em loop, como a macro está configurada para executar, o número total de formas embutidas no documento é alterado em cada iteração e o novo total é recalculado. Na melhor das hipóteses, isso pode realmente retardar o processo e, na pior das hipóteses, os objetos podem ser perdidos.

A correção é trabalhar de trás para a frente da última forma em linha para a primeira.

Sub resize()
Dim i As Long, rng As Range
With ActiveDocument
    For i = .InlineShapes.Count To 1 Step -1
        With .InlineShapes(i)
            .ScaleHeight = 50
            .ScaleWidth = 50
            Set rng = .Range
            .ConvertToShape
            rng.ShapeRange(1).WrapFormat.Type = wdWrapTopBottom
        End With
    Next i
End With
End Sub
    
por 18.07.2018 / 02:46