Hoje vamos ensinar um truque que já foi pedido algumas vezes por nossos leitores: Como redimensionar imagens com a simplicidade de 1 clique.

A tarefa é muito útil para aqueles que trabalham com imagens em suas planilhas, muitas imagens na verdade. Imagine alguém que insira umas 50 imagens em um relatório e depois precise ajustar as dimensões uma a uma. Perderia horas e horas, mas com nosso supertruque fará isso me menos de 2 segundos.

Confira aqui nosso curso completo e gratuito sobre VBA

Como sempre, vamos usar nosso bom e velho VBA para resolver estas questões que estão além do alcance das funções nativas do Excel. Para que tudo funcione você vai fazer o seguinte:

Vá até a seção de edição de VBA através do atalho Alt + F11. No menu à esquerda clique com o botão direito em 'Microsoft Excel Objetos' e vá em 'inserir' e depois em 'módulo'.

Nesta nova janela você vai colocar o código

Sub AjustaTamanho()
     For Each sh In ActiveSheet.Shapes
        If sh.Name Like "*Pict*" Then
        ActiveSheet.Shapes.Range(Array(sh.Name)).Select
          With Selection
            .Top = sh.TopLeftCell.Top
            .Left = sh.TopLeftCell.Left
            .ShapeRange.Height = 150
            .ShapeRange.Width = 180
          End With
        End If
    Next
End Sub 

Note que este código contém algumas particularidades, vamos a elas:

1 - O Excel irá sempre fazer o redimensionamento PROPORCIONAL e para isso utilizará somente 1 dos aspectos, ou altura ou largura.

Você irá informar qual deseja através das seguintes linhas:

.ShapeRange.Height = 150
.ShapeRange.Width = 180

A primeira delas diz respeito à altura, e a segunda à largura. Por padrão o Excel escolherá SEMPRE aquela que está mais abaixo, ou seja, largura, no caso do exemplo acima. Mas e se você quiser utilizar a altura, ou seja, a linha de cima?

Neste caso é só fazer ele ignorar a linha de baixo. E isso é bem fácil, você só precisa colocar uma aspa simples () antes do início da linha. Veja que ela, inclusive, muda para a cor verde.

2 - Segundo nosso código o Excel está programado para alinhar a imagem ao canto superior esquerdo da célula que que o mesmo canto estiver posicionado.

Confira no exemplo abaixo que a foto estava com o canto sobre a célula C3 e após usarmos a VBA ela foi alinhada. Veja o antes e o depois do processo:

Se quiser que isso não ocorra, você já sabe é só fazer ele ignorar as respectivas linhas com a nossa conhecida aspa simples:

3 - E por último, como você já deve ter notado, os valores depois do sinal de igual nas linhas de largura e altura são os tamanhos.

.ShapeRange.Height = 150
.ShapeRange.Width = 180

Como você verá abaixo no nosso exemplo, pode inserir um botão para facilitar o uso. Veja aqui como criar seu botão e atribuir à sua macro.

Agora sim, com tudo programado é só clicar no botão ou executar manualmente o VBA e todas as fotos serão redimensionadas. Veja o código em ação:

Até a próxima