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!