Enviar Imagens via E-mail por Excel VBA
Olá, Programadores! Nesse post vocês vão aprender a enviar e-mail pelo Excel VBA!
Para isso, começo compartilhando com vocês o código que utilizo para enviar e-mails com print de gráficos e relatórios para meus clientes através de desenvolvimentos em Excel VBA.
E é exatamente este código VBA e outros similares que utilizo para enviar planilhas de vendas, planilhas de metas e acompanhamentos de estoque.
Então, como pré requisito, apenas mantenham aberto o aplicativo do Outlook no PC antes de enviar, ok?
Código VBA: Enviar Imagens via E-mail
Sub Enviar_Email_Diário_Outlook()
°RESPOSTA = MsgBox("Tem certeza que deseja enviar os e-mails diários?",vbYesNo)
If °RESPOSTA = vbYes Then
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.Calculation = xlManual
'Textos do E-mail'
°PARÁGRAFO_1 = Sheets("(A) Resumo Diário").Cells(10, 1)
'Lista de E-mails que receberão a mensagem'
°EMAIL_1 = Sheets("(A) Resumo Diário").Cells(1, 1)
'Assunto do E-mail'
°ASSUNTO = "Fluxo de Caixa Diário"
'Criando arquivo de apoio e configurando'
Workbooks.Add
ActiveWindow.DisplayGridlines = False
°BASE = ActiveWorkbook.Name
Dim Intervalo As Range
Dim grafico As ChartObject
Dim objOutlook As Object
'Printando Gráfico no arquivo atual e copiando'
ThisWorkbook.Activate
Set Intervalo = Sheets("(A) Resumo Diário").Range("A4:X55")
Intervalo.CopyPicture
Workbooks(°BASE).Activate
Set grafico = Sheets("Planilha1").ChartObjects.Add(Intervalo.Left,Intervalo.Top, Intervalo.Width, Intervalo.Height)
With grafico
.Activate
.Chart.Paste
.Chart.Export Environ$("temp") & "/grafico.jpg"
.Delete
End With
ActiveWorkbook.Close SaveChanges:=False
'Enviando e-mail com o gráfico printado via Outlook'
Dim Contador As Integer
Dim iMsg, iConf, Flds
Set objOutlook = CreateObject("Outlook.application").createitem(0)
With objOutlook
.Subject = °ASSUNTO
.To = °EMAIL_1
.Attachments.Add Environ$("temp") & "/grafico.jpg"
.HTMLBody = "<p style = "" color: RGB(0,0,0) "">" & °PARÁGRAFO_1 & "</p>"
.display
.send
End With
'Finalizando a macro'
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End If
End Sub
Entendendo o Código
Note, então, que as especificidades do e-mail que será enviado aparecem após “Set objOutllok” e dentro de “With”.
- .Subject = °ASSUNTO (“Fluxo de Caixa Diário”)
- .To = °EMAIL_1 (Trata-se do endereço de e-mail que está inputado na célula A1 da aba “(A) Resumo Diário”)
- .Attachments.Add = (grafico.jpg – é o nome do arquivo com a imagem que será enviada)
- .HTMLBody = °PARÁGRAFO_1 (Texto do e-mail que já está inputado na célula A10 da aba”(A) Resumo Diário”)
Portanto, grande parte das informações que serão enviadas por e-mail não aparecem escritas no código VBA e sim em células do Excel para fácil controle e modificação, como a mensagem do corpo do e-mail e o assunto envolvido.
Resultado: E-mail enviado
E se olharmos para a figura abaixo, conseguimos enxergar um exemplo de e-mail desenvolvido em Excel VBA e enviado através de um código similar a este acima.

Conclusão
Portanto, enviar e-mail por Excel VBA é bem simples e é apenas uma das diversas funcionalidades do aplicativo da Microsoft.
Por exemplo, no sistema de Projeção de Vendas que fizemos para a BIC utilizamos uma macro como essa para enviar automaticamente para mais de 70 pessoas e-mails personalizados com links de acesso a arquivos em poucos segundos.
Então, acha que precisa de ajuda com o desenvolvimento de arquivos em excel? Aqui na CTRL2 nós criamos desde planilhas mais simples de controle até sistemas complexos de gestão.
E o sucesso dos nossos modelos criados é resultado de muita dedicação e tudo a um preço muito mais acessível do que soluções em outras plataformas.
Por fim, clique aqui e entre em contato conosco.
Abraços!