Formatar Imagens Automaticamente no Excel Usando o VBA

Hoje eu quero te mostrar como formatar imagens automaticamente no Excel com o auxílio do VBA para essa automação!

A macro SelecionarImagem formata imagens automaticamente no Excel: ela abre a caixa de seleção de arquivo com GetOpenFilename, insere a foto escolhida na planilha, deixa o formato oval, ajusta a altura para 85 e cola a imagem na primeira linha vazia da coluna A, sempre no mesmo padrão.

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo!

O que você aprende neste vídeo

Resposta rápida: A aula ensina a montar uma macro em VBA que insere e padroniza fotos no Excel com um clique. Você aprende a pegar o arquivo com Application.GetOpenFilename, inserir por ActiveSheet.Pictures.Insert, deixar a imagem redonda com msoShapeOval, fixar a altura em 85 pontos e empilhar cada foto na primeira linha vazia usando End(xlUp) e Offset.

Neste vídeo (11 min):

  • 1:00 - Resultado da macro e abertura do editor VBA com ALT + F11 para ver o código
  • 2:00 - Variável que guarda o caminho da imagem e por que escrever o caminho fixo não serve
  • 3:00 - Application.GetOpenFilename abrindo a caixa de seleção de arquivo com título próprio
  • 4:00 - Inserção da foto na aba ativa com ActiveSheet.Pictures.Insert, já selecionando o objeto
  • 5:00 - Execução linha a linha com F8 para ver a variável preencher e a imagem entrar
  • 6:00 - Recorte redondo pelo AutoShapeType com msoShapeOval na forma selecionada
  • 7:00 - Altura fixa em 85 pontos e onde ler esse valor na altura de linha do Excel
  • 8:00 - Primeira linha vazia achada com End(xlUp) e Offset, e imagem recortada com Cut
  • 9:00 - Colagem da foto e o truque de gravar um valor na célula para a próxima descer sozinha

Trechos do vídeo:

  • A imagem fica redonda porque o msoShapeOval aplicado a uma foto quadrada recorta um círculo.
  • Buscar a última linha de baixo para cima com End(xlUp) funciona mesmo com a coluna vazia, ao contrário da seta para baixo.
  • A altura de 85 pontos usa a mesma unidade que o Excel mostra ao redimensionar a altura de uma linha.
  • Célula com imagem em cima continua vazia para o VBA, por isso a macro grava um valor nela antes de encerrar.

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Fala, Impressionadores! Na aula de hoje vamos te ensinar como formatar imagens automaticamente no Excel usando o VBA!

É isso mesmo, vamos formatar imagens no Excel com VBA para automatizar esse processo e você ficar mais produtivo.

Esse recurso vai ser muito útil principalmente quando estiver criando seus dashboards e precisar de imagens em um padrão definido.

Isso vai facilitar na hora de trazer uma imagem para não ter que ajustar o tamanho, depois colocar dentro de uma célula e por fim ajustar o formato dela.

Ícone VBAVBA Impressionador

Como automatizar praticamente qualquer tarefa repetitiva que você faça dentro do Excel. Aprenda a criar integrações do Excel com o PowerPoint, Word, Outlook e muito mais. Aprenda a criar automações para resolver tudo com apenas um clique em um botão. Tudo isso com uma única linguagem que junta todos esses programas.

Começar agoraSeta para a direita
Fundo VBATelas VBA

Com essa macro para inserir imagem no Excel formatar imagem no VBA fica tudo mais fácil com apenas um clique!

Basta depois selecionar a imagem desejada e pronto, a mágica acontece e as imagens ficam todas no mesmo padrão e ficam organizadas.

Dessa forma já pode utilizá-las para criar o seu dashboard com essas imagens sem se preocupar!

Imagens

Disponibilizamos, para a aula de hoje, imagens referentes a algumas pessoas diretamente ligadas à Hashtag. Elas serão inseridas dentro do Excel, através do VBA. Veja as imagens:

Formatar Imagens Automaticamente


Inserindo um Módulo no VBA

Para criar um código dentro de um módulo, precisamos primeiramente abrir o ambiente de VBA, a partir do atalho do teclado Alt(+Fn)+F11.

Como não temos nenhum módulo destinado ao tema da aula de hoje, e por questão de organização, vamos criar um módulo à parte.

Vamos na guia Inserir > Módulo, e uma caixa branca se abrirá.

Formatar Imagens Automaticamente

Por padrão ele terá o nome de “Módulo 1”. Colocaremos a seguinte sub dentro dele:

Sub SelecionarImagem()
Dim caminhoImagem As String
caminhoImagem = Application.GetOpenFilename(Title:="Escolha a imagem a ser formatada")
ActiveSheet.Pictures.Insert(caminhoImagem).Select
Selection.ShapeRange.AutoShapeType = msoShapeOval
Selection.ShapeRange.Height = 85
Selection.Cut
Range("A1000000").End(xlUp).Offset(1, 0).PasteSpecial
Range("A1000000").End(xlUp).Offset(1, 0).Value = 1
Range("B1").Select
End Sub

Explicação do código acima:

  • Dimensionar a variável “caminhoImagem” como um texto (tipo String)
  • Armazenar na variável “caminhoImagem” o resultado da exibição da caixa de diálogo responsável por abrir algum arquivo, que vai obter o nome de arquivo do selecionado pelo usuário, mas sem abrir nenhum arquivo
  • Inserir, e selecionar, a figura que está armazenada no texto representado pela variável “caminhoImagem” na planilha ativa
  • Transformar a forma da imagem selecionada e inserida anteriormente em oval (msoShapeOval)
  • Transformar a altura da imagem em questão em 85, correspondendo ao programado para caber na altura das células da aba em questão
  • “Cortar” a imagem inserida (posteriormente será colada dentro de uma célula)
  • Colar a imagem em questão na célula na linha imediatamente abaixo da última célula preenchida da coluna A
  • Armazenar o número 1 no valor dessa célula em que inserimos a imagem, para que ela esteja “preenchida” e evite de colar outra imagem no mesmo local
  • Selecionar a célula B1, atrás do botão “Selecionar imagem”
  • Se encerra o código

Após rodar o código pela primeira vez e selecionar uma imagem, temos o seguinte resultado:

Formatar imagens no Excel com VBA
Formatar imagens no Excel com VBA

Após rodar o código pela segunda vez, por exemplo, e selecionar uma imagem, temos o seguinte resultado:

Formatar imagens automaticamente no Excel
Formatar imagens automaticamente no Excel

Perguntas frequentes

1. Como inserir uma imagem no Excel pelo VBA?

O caminho do arquivo é capturado por Application.GetOpenFilename, que abre a janela de escolha sem abrir o arquivo, e guardado na variável caminhoImagem, do tipo String. Em seguida, ActiveSheet.Pictures.Insert coloca a figura na planilha ativa e já a deixa selecionada para os ajustes.

2. Como deixar a foto redonda pelo código?

Com a imagem selecionada, a linha Selection.ShapeRange.AutoShapeType = msoShapeOval transforma a moldura em oval. Logo depois, ShapeRange.Height = 85 padroniza a altura, medida escolhida para caber nas células da aba da aula. Assim todas as fotos saem iguais, prontas para o dashboard.

3. Como a macro sabe onde colar cada imagem?

Depois de recortar a figura com Selection.Cut, o código procura a última célula preenchida da coluna A com End(xlUp) e desce uma linha com Offset(1, 0) para colar ali. Na mesma célula ele grava o número 1, marcando o espaço como ocupado para a próxima imagem não sobrepor.

4. Como rodar essa macro sempre que precisar?

Guarde a Sub em um módulo próprio, criado no editor do VBA em Inserir > Módulo, e ligue a macro a um botão na planilha. A cada clique, o Excel abre a janela para você escolher a imagem, formata e posiciona sozinho, sem nenhum ajuste manual de tamanho.

Conclusão de Como Formatar Imagens Automaticamente

Nessa aula você lidou com:

Até a próxima, Impressionadores! Fique ligado no nosso canal do Youtube para mais conteúdo de VBA toda semana pra você! Valeu!

Hashtag Treinamentos

Para acessar outras publicações de VBA, clique aqui!


Quer aprender mais sobre VBA com um Minicurso Gratuito?