Blog

Postado em em 17 de julho de 2020

Enviar E-mail pelo VBA (Cartão de Aniversário)

Como Enviar E-mail pelo VBA

Você sabia que é possível fazer o Excel enviar e-mail pelo VBA? E que é possível ainda incluir um cartão dentro desse e-mail? 

Neste post vamos te ensinar a fazer isso! Em nosso exemplo, vamos fazer o Excel enviar e-mails de aniversário incluindo um cartão de parabéns. 

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

Clique aqui para baixar a planilha utilizada nessa publicação!

Como fazer um e-mail de aniversário pelo VBA

Vamos considerar nossa planilha de base de dados. Nela, temos as datas de aniversário de cada pessoa e a ideia é que, ao clicarmos em “Checar aniversários”, o Excel analise cada uma das datas e, caso alguém faça aniversário,  dispare o e-mail para a pessoa.

Planilha Base VBA

Planilha Base VBA

 

Abrindo o VBA (alt+F11 ou, caso não funcione, alt+fn+F11), vamos inserir o seguinte código:

Sub enviar_email()

linha = 2

While Cells(linha, 1) <> “”
If Cells(linha, 6) <> Year(Date) And Cells(linha, 4) = Day(Date) And Cells(linha, 5) = Month(Date) Then
Set objeto_outlook = CreateObject(“Outlook.Application”)
Set Email = objeto_outlook.createitem(0)

Email.display

Email.to = Cells(linha, 2).Value
Email.Subject = “Feliz Aniversário!”

Email.Body = “Oi, ” & Cells(linha, 1).Value & “!” & Chr(10) & Chr(10) _
& Cells(1, 9).Value & Chr(10) & Chr(10) _
& “Abraços,” & Chr(10) & Cells(2, 9).Value

Email.Attachments.Add (ThisWorkbook.Path & “\imagem-aniversario.jpg”)
Email.send

Cells(linha, 6).Value = Year(Date)
End If

linha = linha + 1
Wend

End Sub

 

Neste código, temos:

Sub enviar_email() : é o nome da função que estamos criando;

linha = 2 : indica que a função deve começar na linha 2, pois é onde o VBA deve começar a analisar os dados na planilha base para encontrar as datas de aniversário (as informações começam na linha 2);

While Cells(linha, 1) <> “” : Indica que a função será realizada enquanto as células de cada linha forem diferentes de vazias, ou seja, a análise será feita indo da linha 2 até a última linha que contém informação em nossa base de dados;

If Cells(linha, 6) <> Year(Date) And Cells(linha, 4) = Day(Date) And Cells(linha, 5) = Month(Date) Then : esta linha traz uma condição. Esta condição avalia se as datas de aniversário são iguais a do dia de hoje para o disparo do e-mail. Então, a primeira condição é que o ano do último envio, que será preenchido pelo usuário, seja diferente do atual, ou seja, Cells(linha, 6) <> Year(Date). A célula da linha analisada, coluna 6 (coluna F, onde está a informação do ano) deve ser diferente do ano atual, trazido pela expressão Year(Date). Isso é feito para as demais colunas da tabela, com as fórmulas Day(Date) para o dia e Month(Date) para o mês, verificando se as informações das células da planilha são iguais às informações da data atual.

Agora que analisamos as datas, se as condições forem atendidas, o e-mail deverá ser disparado.

O e-mail será enviado através do Outlook, o programa de e-mails da Microsoft que pode ser baixado neste link. As expressões para criação do e-mail são trazidas a seguir.

Set objeto_outlook = CreateObject(“Outlook.Application”) : a função create object é utilizada sempre que quisermos abrir um programa fora do Excel, no nosso caso será o Outlook.

Set Email = objeto_outlook.createitem(0) : Cria um e-mail no Outlook (é como se “clicasse” no comando “Novo Email”):

Novo e-mail Outlook

Novo e-mail Outlook

 

Email.display : Essa expressão traz o display de e-mail do Outlook, ou seja, mostra a tela a seguir:

Display e-mail Outlook

Display e-mail Outlook

Com o e-mail aberto, precisamos preencher seus campos:

Email.to = Cells(linha, 2).Value : preenche os dados de para quem o e-mail será enviado, que é o valor contido na coluna 2 da base de dados (e-mail do aniversariante);

Email.Subject = “Feliz Aniversário!” : preenche o assunto do e-mail com o texto “Feliz Aniversário”;

Email.Body = “Oi, ” & Cells(linha, 1).Value & “!” & Chr(10) & Chr(10) _
& Cells(1, 9).Value & Chr(10) & Chr(10) _
& “Abraços,” & Chr(10) & Cells(2, 9).Value : preenche o corpo do e-mail com o texto “Oi”, seguido do nome da pessoa especificado na primeira coluna da base de dados e trazido pela expressão Cells(linha, 1).Value seguido de  “!”. Em seguida, o VBA pula uma linha no corpo do e-mail, através da expressão Chr(10) (pular uma linha). São puladas então duas linhas, sendo a expressão Chr(10) utilizada duas vezes. Então, após pular as linhas o código traz o texto da linha 1, coluna 9, que é a mensagem padrão especificada pelo usuário, no nosso caso será: “Passando pra te desejar um feliz aniversário! Muitas felicidades!”. Após isso, duas linhas são puladas (comando Chr(10)), é inserido o texto “Abraços”, uma linha é pulada e é trazido o remetente, que está especificado na linha 2, coluna 9 de nossa base de dados. Portanto, caso seja aniversário da “Adrielle”, por exemplo, o e-mail ficará como segue:

Mensagem Outlook - Enviar e-mail pelo VBA

Mensagem Outlook

O último detalhe é o anexo, a imagem de parabéns que deve estar salva na mesma pasta que a planilha que estamos trabalhando.

Email.Attachments.Add (ThisWorkbook.Path & “\imagem-aniversario.jpg”) : anexa a imagem de aniversário ao e-mail, que deve estar salva na mesma pasta da planilha com o nome imagem-aniversario;

Email.send : Envia o e-mail;

Cells(linha, 6).Value = Year(Date): Agora, com o e-mail enviado, nossa macro deverá atualizar  o ano do ultimo envio com o ano atual, o que é feito através desta expressão;

End If : finaliza nosso IF;

linha = linha + 1 : passa toda a análise para a próxima linha de nossa base de dados;

End Sub : Finaliza nossa Macro

Agora, já temos nossa macro que nos possibilita enviar e-mail pelo VBA. Espero que consiga utilizar o que aprendemos aqui em seus códigos e planilhas!

 

Hashtag Treinamentos

Você é do Rio de Janeiro ou de Niterói? Já conhece nosso curso de excel presencial que oferecemos nessas localidades? Clique para saber mais!


Quer aprender mais sobre VBA com um Minicurso Gratuito?