Como enviar e-mail pelo Excel VBA sem usar o Outlook?

Como enviar e-mail pelo Excel VBA sem usar o Outlook?

Objetivo: Enviar email VBA a partir do Excel.

Procurando pela internet como enviar email pelo excel ou como enviar email pelo VBA, sem utilizar o outlook; achei um assunto interessante. Então, encontrei um código macro VBA no qual me baseei e realizei algumas alterações como a inclusão de anexos nos emails enviados pelo Excel. 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:

'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.

Marcos Rieper


Marcos Rieper

Pai, marido, professor e consultor em Excel.

Obrigado por ler este artigo, este blog foi criado para difundir o conhecimento em Excel à todos.

Divulgamos novos artigos nas redes sociais, basta clicar nos ícones abaixo.

Excel não precisa ser complicado

Assine nossa newsletter e receba dicas práticas para dominar o excel