Blog

Postado em em 17 de julho de 2020

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

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 para nossa macro de enviar e-mail pelo VBA é 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?


Quer participar do maior evento de Power BI da América Latina de forma 100% Online e Gratuita? Inscreva-se abaixo!