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 + F11para 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.GetOpenFilenameabrindo 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
F8para ver a variável preencher e a imagem entrar - 6:00 - Recorte redondo pelo
AutoShapeTypecommsoShapeOvalna 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)eOffset, e imagem recortada comCut - 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
msoShapeOvalaplicado 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.
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:

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á.

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:

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

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:
- Tipos de dados no VBA
- Macro para inserir imagem no Excel
- Formatar imagens de forma automática no Excel
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?

