Blog

7 de maio de 2020

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.

 

Exemplo E-mail Excel VBA

 

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!

Inscreva-se em nossa newsletter!