Sempre digo que o Excel não para de nos surpreender, pois sempre aprendemos algo que nem mesmo imaginávamos ser possível. É o caso da aula de hoje, em que vamos aprender a mandar e-mail diretamente do Excel. E digo mais: Diretamente MESMO, sem uso de Outlook ou qualquer outra ferramenta que não mesmo o próprio Excel.
E antes que você se pergunte um exemplo de aplicação desta técnica, clique aqui e confira uma planilha de backup local e via e-mail que faz uso dos recursos que você verá a seguir.
Enviar e-mails com o Excel pode ser feito de diversas maneiras, utilizando Outlook, encaminhando para a sua página de e-mail, ou como dissemos, enviar diretamente pelo próprio programa, sem nenhum esforço adicional. Este último, claro, é o melhor, então será ele que vamos aprender.
Como você já deve ter imaginado, este processo será possível através de um código VBA. Então, vamos ao de sempre: Aperte Alt + F11 para entrarmos na janela de edição de VBA’s.
O primeiro passo é ir até "Ferramentas", depois "Referências" e vamos correr a lista para baixo até encontrar "Microsoft CDO for Windows 2000 Library". Marque e dê o OK.
Agora vamos criar um módulo clicando com o botão direito em "VBAProject", depois em "Inserir" e então "Módulo". Nesta janela de módulo vamos colar o seguinte código
'Baseado no código disponibilizado em http://guiadoexcel.com.br/
Function EnviaEmail()
Dim iMsg, iConf, Flds
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields
schema = "http://schemas.microsoft.com/cdo/configuration/"
Flds.Item(schema & "sendusing") = 2
'Configura o smtp
Flds.Item(schema & "smtpserver") = "smtp.gmail.com"
'Configura a porta de envio de email
Flds.Item(schema & "smtpserverport") = 465
Flds.Item(schema & "smtpauthenticate") = 1
'Configura o email do remetente
Flds.Item(schema & "sendusername") = "[email protected]"
'Configura a senha do email remetente
Flds.Item(schema & "sendpassword") = "senha do seu e-mail"
Flds.Item(schema & "smtpusessl") = 1
Flds.Update
With iMsg
'Email do destinatário
.To = "[email protected]"
'Seu email
.From = "[email protected]"
'Título do email
.Subject = "Isto é um teste de Envio de e-mail"
'Mensagem do e-mail, você pode enviar formatado em HTML
.HTMLBody = "Mensagem enviada com o gmail"
'Seu nome ou apelido
.Sender = "Teste"
'Nome da sua organização
.Organization = "Aprender Excel"
'e-mail de responder para
.ReplyTo = "[email protected]"
'Anexo a ser enviado na mensagem. Retire a aspa da linha abaixo e coloque o endereço do arquivo
.AddAttachment ("c:/fatura.txt")
Set .Configuration = iConf
.Send
End With
Set iMsg = Nothing
Set iConf = Nothing
Set Flds = Nothing
End Function
Sub disparar()
EnviaEmail
MsgBox "O e-mail foi disparado com sucesso!", vbOKOnly, "e-mail enviado"
End Sub
Após colar o código no seu Excel veja que diversas linhas ficarão verde, pois são linhas que o código ignorar. Ou seja, são linhas comentários, que lhe dizem para que server a linha imediatamente abaixo.
Por exemplo
'Configura o email do remetente
Flds.Item(schema & "sendusername") = "[email protected]"
Ali onde está o meu e-mail (entre aspas) você irá colocar o seu e assim por diante.
Atente para o campo remetente, senha, destino, corpo do e-mail, etc.
Detalhe: As configurações de Smtp e porta de envio do e-mail DESTE POST estão de acordo com o GMAIL. Se você usa outro serviço irá ter de adaptar às necessidades do mesmo.
Se você colocou tudo certinho então seu envio já estará configurado e fará o disparo toda vez que você disparar o mesmo. Sugiro que você crie um botão e coloque o atalho para o disparo. Assim é só clicar no botão e fazer o disparo automaticamente. Se você não sabe como fazer isso, confira um passo a passo rapidinho clicando aqui.
Detalhe 2: Como dissemos, o código está otimizado para o Gmail, e o serviço de e-mail do Google tem uma camada extra de proteção. Na primeira vez que você tentar enviar um e-mail pelo Excel vai receber um e-mail com a seguinte mensagem:
Clique em "Ativar" e pronto. Seus e-mails serão enviados a partir do Excel.
Quer um exemplo disso tudo funcionando na prática? Clique aqui e baixe já!!
Definindo o destinatário a cada envio
Se você leu o código acima e prestou atenção nas linhas reparou que uma delas era para o destinatário do e-mail, certo? Nesse caso o e-mail será enviado sempre para a mesma pessoa, o que será útil caso você tenha que enviar sempre para o seu gerente, etc.
Mas e se você quiser enviar para pessoas diferentes a cada vez? Então vamos criar um campo onde digitar o endereço de e-mail na planilha e, no código, colocar esta célula como referência de endereço a ser enviado.
Exemplificando:
Essa será o local onde digitarei o e-mail a ser enviado:
E no código, onde for
'Email do destinatário
.To = [email protected]
Vamos substituir por:
'Email do destinatário
.To = Range("C2")
Atente que no "Range" vamos inserir o mesmo endereço de célula que você usou para ser inserido o e-mail.
Enviando a planilha em anexo
Como explicamos no código, há uma linha que permite o envio de algo em anexo. É a seguinte linha:
'Anexo a ser enviado na mensagem
.AddAttachment ("c:/fatura.txt")
Como você já deve ter percebido, é só substituir o endereço do arquivo por aquele fictício na linha acima.
Você pode, inclusive, enviar a própria planilha em que está trabalhando e disparando o e-mail. Isso serve, por exemplo, caso você esteja utilizando a planilha como um pedido de orçamento.
Repetindo em determinando tempo
E se você usar a planilha para fazer backup automaticamente e envio para o e-mail, pode automatizar a planilha para fazer isso a cada 5 minutos, 30 segundos, 1 hora ou qualquer espaço de tempo que você desejar.
Para ver como implementar o processo, é só fazer o que foi ensinado neste post aqui.
E veja que este é apenas o começo. Temos aqui no Aprender Excel a planilha geradora de PDF que pode servir como planilha de orçamento, nota fiscal, pedidos, etc. Você pode mesclar os recursos e fazer uma superplanilha. O link você confere aqui.
😕 Poxa, o que podemos melhorar?
😃 Boa, seu feedback foi enviado!
✋ Você já nos enviou um feedback para este texto.