Neste artigo você aprenderá como enviar email VBA no Excel sem usar o Outlook. No artigo você tem o código pronto para a o envio de email.
Como Funciona o Envio de Email?
O envio de e-mail na internet é feito utilizando o protocolo SMTP, provavelmente você já viu isso quando estava configurando o seu Outlook.
Este é um formato padronizado de envio de email utilizado por todos os sistemas, como Gmail e Hotmail.
Nele temos os campos de:
- Corpo do email
- Destinatários (Para, Cc, Bcc)
- Assunto
- Anexos
O protocolo é padronizado para facilitar o envio dos emails por qualquer plataforma de envio de emails, assim como a leitura dos emails enviados.
No VBA do Excel é possível realizar o envio de emails utilizando o protocolo SMTP e nest artigo você tem um código pronto para o envio de emails pelo Excel.
Esta funcionalidade no Excel é particularmente útil, pois permite a automação de envio de emails, inclusive com anexos se precisar.
Como enviar e-mail pelo Excel VBA sem usar o Outlook?
O Excel VBA tem por finalidade permitir a automação de processos no Excel.
Um exemplo prático é o envio de email pelo Excel sem a utilização do Outlook.
Para isso é necessário que seja realizada uma configuração inicial com as referências no VBE.
Para tanto, abra o VBE, habilitando a guia Desenvolvedor e clicando no botão Visual Basic, nele siga conforme os passos que temos abaixo.
Para utilizar este código a primeira coisa que você deve fazer é abrir o VBA e clicar em Ferramentas->Referências->Microsoft CDO for Windows 2000 Library marcando este último, que é o componente do Windows para envio de emails.
O segundo passo é criar um módulo e incluir o código fonte abaixo que foi comentado para melhor entendimento. Substitua os pontos aonde está escrito teste pelos dados correspondentes e você conseguirá enviar e-mails a partir do Excel. Este exemplo está configurado para envio de emails a partir de uma conta do GMAIL.
Código VBA para enviar email pelo Gmail pelo Excel:
teste
'Baseado no código disponibilizado em: http://www.a1vbcode.com/snippet-3691.asp
Function EnviaEmail2()
Dim iMsg, iConf, Flds
'Seta as variáveis, lembrando que o objeto Microsoft CDO deverá estar habilitado em Ferramentas->Referências->Microsoft CDO for Windows 2000 Library
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields
'Configura o componente de envio de email
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") = "seuemail@gmail.com"
'Configura a senha do email remetente
Flds.Item(schema & "sendpassword") = "suasenha"
Flds.Item(schema & "smtpusessl") = 1
Flds.Update
With iMsg
'Email do destinatário
.To = "destino@gmail.com"
'Seu email
.From = "seuemail@gmail.com"
'Título do email
.Subject = "Isto é um teste de Envio de email"
'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 = "Empresa Teste"
'email de responder para
.ReplyTo = "teste@gmail.com"
'Anexo a ser enviado na mensagem
.AddAttachment ("c:\fatura.txt")
'Passa a configuração para o objeto CDO
Set .Configuration = iConf
'Envia o email
.Send
End With
'Limpa as variáveis
Set iMsg = Nothing
Set iConf = Nothing
Set Flds = Nothing
End Function
Este código pode ser facilmente adaptado para enviar emails com informações de células do Excel e uma mensagem formatada em HTML.
Conclusão
O Excel VBA é uma ferramenta de programação completa e que permite a automação de processos complexos, como o envio de email com anexo.
Desta forma este código VBA para envio de email sem a necessidade do Outlook pode te ajudar neste processo, e também pode ver o vídeo ao topo do artigo que demonstra o funcionamento de uma solução completa de envio do email.