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