Envio de Mala Direta por Email com VBA

Relatório com Referência a Pasta Externa Utilizando Indireto 2
Relatório com Referência a Pasta Externa Utilizando Indireto
5 de abril de 2011
Controle de Cheques com VBA
Controle de Cheques com VBA
7 de abril de 2011

Objetivo: Enviar mala direta por email a partir de uma lista de clientes, alterando o corpo da mensagem conforme cada cliente.


//

Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

 


Fazendo uma pequena adaptação do post http://guiadoexcel.com.br/enviar-email-com-excel-sem-usar-o-outlook.

Neste artigo temos um pequeno exemplo de uma mensagem particular para cada cliente da lista sendo enviado diretamente pelo Excel com uso de VBA.

Atenção: Não esqueça de abrir o VBA e alterar os campos com o seu email, senha e configurações de porta smtp, etc. Se for Gmail, basta colocar seu nome, email e senha.

Este artigo também foi criado para auxiliar o leitor Luiz de São Paulo que estava com esta necessidade. Espero que ajude.

Código Fonte:

'Baseado no código disponibilizado em: http://www.a1vbcode.com/snippet-3691.asp
Sub lsEnviaEmail(ByVal lEmail As String, ByVal lMsg As String)
    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.rieper@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 = lEmail
        'Seu email
        .From = "SeuNome "
        'Título do email
        .Subject = "Isto é um teste de Envio de email"
        'Mensagem do e-mail, você pode enviar formatado em HTML
        .HTMLBody = lMsg
        'Seu nome ou apelido
        .Sender = "Teste"
        'Nome da sua organização
        .Organization = "Empresa Teste"
        'email de responder para
        .ReplyTo = "marcos.rieper@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
        SendEmailGmail = .Send
    End With

    'Limpa as variáveis
    Set iMsg = Nothing
    Set iConf = Nothing
    Set Flds = Nothing
End Sub

Public Sub lsEnviarEmails()
    Dim iTotalLinhas, i As Integer

    iTotalLinhas = Cells(Rows.Count, 1).End(xlUp).Row + 1

    i = 2
    While i < iTotalLinhas
        lsEnviaEmail Range("B" & i).Value, "Mensagem para o cliente " & Range("A" & i).Value
        i = i + 1
    Wend
End Sub

Abraço

Marcos Rieper

Download “Enviar e-mail com o Excel” EnviaremailcomExcel.zip – Baixado 22 vezes – 19 KB

10 Comentários

  1. Julio disse:

    Boa Tarde!
    é possível adaptar o código VBA do post: enviar-email-com-excel-sem-usar-o-outlook. Para que p mesmo envie um anexo para cada cliente?

    no código acima, ele envia um único anexo para todos os anexo, gostaria que ele enviasse uma anexo diferente para cada cliente.

    è possível?

  2. Robson disse:

    Ola amigo,
    Muito bom seus artigos.

    Pode fazer um onde é enviado um email quando um campo for preenchido?
    Por exemplo tenho uma tabela de clientes
    Nome, email, Código de rastreio. Quando eu preencher o campo Código de rastreio, gostaria que enviasse um email para o o cliente. que esta cadastrado no campo Email. Com um texto padrão mais o Código de rastreio.

    Desculpe a ignorância. Mas estou começando agora com o excel.

  3. MuriloZ disse:

    Bom dia

    Seu post me ajudou muito, só gostaria de saber se tem como fazer uma coisa.

    Como posso alterar o tamanho e a fonte da Range(“A” & i).Value que fica dentro do lMsg?

  4. Pessoal,
    Segue link da planilha com uma macro para enviar uma lista, com vários email e configuração da conta GMAIL.
    Link: https://mega.nz/#!PIN11SSZ!Pp3XD7d9fbqoltok3Rt4-pYrBhQaKN8p7cI1ul7WFWs

    Podemos também anexar no email um arquivo TXT ou HTML.

    Após incluir email validos, alterar usuário e senha na macro, tive o erro abaixo na seguinte linha: “SendEmailGmail = .Send”

    Mensagem de erro:
    Falha ao enviar
    Motivo:
    Não foi possível enviar a mensagem para o servidor SMTP.
    O código de erro de transporte foi 0x80040217.
    A resposta do servidor foi not available.

    Se tiver alguma ideia.
    No aguardo,
    Marcos Wilkens
    marcoswilkens@gmail.com

  5. leandro disse:

    Bom dia,

    Criei uma rotina de envio de mail mas preciso de um código para trocar o email de usado para envio das mensagens. segue abaixo.

    Private Sub BOT_COMSULTACOM_Click()
    ‘Mensagem do email
    mensagem_padrão = TextBox_CAMPO_EMAIL
    ‘Não mostrar movimentações da tela
    Application.ScreenUpdating = False

    ‘Deixar ativa a aba ‘email’
    Sheets(“EMAILS”).Select

    ‘Iniciar
    For i = 1 To WorksheetFunction.CountA(Sheets(“EMAILS”).Columns(“a:a”))

    ‘Variáveis de armazenamento das informações
    nome_cliente = “”
    email_cliente = Sheets(“EMAILS”).Range(“a” & i).Value
    saudacao_mensagem = “Olá, ” & nome_cliente & Chr(10) & Chr(10)

    ‘Mostrar status da operação para o usuário
    Application.StatusBar = “Enviando email para ” & email_cliente & “…”

    ‘Deixar ativa a aba ‘email’
    Sheets(“EMAIL_MKT”).Select

    ASSUNTO = TextBox_ASSUNTO_EMAIL

    ‘MOSTRAR PLANILHA
    Application.Visible = True
    ‘Mostrar página de email
    ActiveWorkbook.EnvelopeVisible = True
    ‘Iniciar envio
    With Sheets(“EMAILS”).MailEnvelope
    ‘Endereço do cliente
    .Item.To = email_cliente
    ‘Assunto do email
    .Item.Subject = ASSUNTO
    ‘Enviar
    .Item.Send
    End With

    ‘Próximo Cliente
    Next i ‘Limpar status de informação
    Application.StatusBar = “”

    ‘Ativar a aba enviar
    Sheets(“EMAILS”).Select

    ‘Mostrar movimentos da tela
    Application.ScreenUpdating = True
    ‘OCULTAR PLANILHA
    Application.Visible = False
    ‘Mensagem final
    MsgBox “Mensagens enviadas com sucesso!”, vbInformation, “Ok”
    Unload Me

    End Sub

  6. Giselle Hamaue disse:

    Marcos Bom dia
    Eu consigo mesclar uma planilha com informações de outra planilha e enviar por email via excel ?
    Ou seja fazer a personalização como é feita no mecanismo de mala direta word via outlook?

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Inscreva-se no nosso canal do Youtube!


Junte-se ao nosso canal do Youtube. Começamos em abril de 2016, mas já temos mais de 06:00 h de treinamentos gratuitos e este número irá aumentar. Vídeos novos todos os sábados.