VBA (Excel) - Enviando Email usando o Outlook


Neste artigo vou mostrar como podemos automatizar o Microsoft Excel usando a linguagem VBA para realizar a seguinte tarefa :   Enviar emails usando o Outlook

Neste artigo, vamos aprender a melhor maneira de enviar e-mails em massa a partir do Excel 2007 usando VBA.

Usando um código bem simples é possível enviar e-mails personalizados para múltiplos endereços de email. O assunto do email e a mensagem podem ser customizados para cada destinatário antes de enviar.

Este código pode ser usado em situações onde temos que enviar muitos emails.

É uma aplicação simples que mostra aos iniciantes e interessados como automatizar tarefas no Microsoft Excel usando a linguagem VBA. Só isso.

O Visual Basic for Applications (VBA) é uma implementação do Visual Basic da Microsoft incorporada em todos os programas do Microsoft Office, bem como em outras aplicações da Microsoft, como o Visio, e que foi também incorporada pelo menos parcialmente em outros programas de terceiros como o AutoCAD, Mathcad e WordPerfect. Ele substitui e estende as capacidades de anteriormente existentes linguagens de programação de macros específicas para as aplicações e pode ser usado para controlar a quase totalidade dos aspectos da aplicação anfitriã, incluindo a manipulação de aspectos do interface do usuário tais como menus e barra das ferramentas e o trabalho com formulários desenhados pelo usuário ou com caixas de diálogo.
http://pt.wikipedia.org/wiki/Visual_Basic_for_Applications

Eu estou usando o Microsoft Office Excel 2007,  o Microsoft Office Outlook 2007 e o sistema operacional Windows 10, e, portanto, o código deste artigo foi testado somente nestas versões e ambiente.

Antes de prosseguir eu sugiro que você leia os seguintes artigos da seção VBA do site Macoratti .net

Os recursos usados no projeto deste artigo foram:

Antes de iniciar temos que realizar duas configurações no Microsoft Excel 2007:

Obs: A necessidade de habilitar a execução de macros é que por padrão, o Excel coloca um nível de segurança mais elevado pois, códigos maliciosos podem ser executados em scripts através de macros no Excel.

Vamos ativar a guia do desenvolvedor e logo  em seguida habilitar a execução de macros.

Para ativar a guia do desenvolvedor (se ainda não estiver ativa) siga os seguintes passos:

Abra o Excel 2007 e ative o Menu principal de opções clicando no botão superior a esquerda, conforme a figura abaixo;

A seguir clique na guia Opções do Excel para abrir a janela - Opções do Excel;

Nesta janela, selecione o item - Mais Usados - e a seguir marque o item - Mostrar guia Desenvolvedor na Faixa de Opções e clique no botão OK;

No menu do Excel selecione a guia do Desenvolvedor e em seguida clique em Segurança de Macro;

Na janela Central de Confiabilidade selecione a opção - Configurações de Macro - e marque o item para habilitar todas as macros conforme a figura abaixo:

Pronto , feito isso já podemos iniciar o desenvolvimento da aplicação VBA no Excel 2007.

Criando a planilha Excel e Enviando Emails

Abra então o Excel 2007, será aberta uma planilha em branco. Clique no botão no canto superior a esquerda para abrir o menu principal de opções;

Selecione a opção Salvar como e clique no item : Pasta de Trabalho Habilitada para Macro do Excel;

Em seguida informe o nome do arquivo : VBA_MandaEmail

Será aberta o arquivo Excel exibindo as três planilhas padrão: Plan1, Plan2 e Plan3;

Vamos inserir alguns dados na planilha Plan1 a partir da célula A1 conforme mostra a figura abaixo:

Nesta planilha informamos :

  1. O email destinatário
  2. O nome do destinatário
  3. A mensagem do email a ser enviado . (Exemplo usado no Excel : = "Olá " & B2 & " Seu pedido foi enviado com sucesso nesta data."

Nota: Você pode usar qualquer dados e mensagens na planilha este foi apenas um exemplo.

Dessa forma a planilha Plan1 será a planilha origem a partir da qual desejamos obter os endereços de email, o nome e a mensagem que vamos enviar.

Criando a macro para enviar Emails

Agora vamos incluir um botão de comando na planilha criada.

Clique na guia do Desenvolvedor e a seguir clique em Inserir e selecione o controle Botão :

Após selecionar o Botão coloque-o na planilha Excel. Fazendo isso de imediato será aberta a janela atribuir macro;

Informe o nome da macro. No exemplo eu usei o nome MandaEmail.

Clique no botão Novo:

O Editor Visual Basic será aberto com um novo módulo criado e a macro pronta para receber o código.

O próximo passo é clicar no menu Ferramentas -> Referências e incluir as seguintes referências :

A seguir digite o código abaixo para a macro MandaEmail:

Sub MandaEmail()
    
    Dim EnviarPara As String
    Dim Mensagem As String
    For i = 1 To 10
        EnviarPara = ThisWorkbook.Sheets(1).Cells(i, 1)
        If EnviarPara <> "" Then
            Mensagem = ThisWorkbook.Sheets(1).Cells(i, 3)
            Envia_Emails EnviarPara, Mensagem
        End If
    Next i
End Sub

Sub Envia_Emails(EnviarPara As String, Mensagem As String)
    Dim OutlookApp As Object
    Dim OutlookMail As Object 
    Set OutlookApp = CreateObject("Outlook.Application")
    Set OutlookMail = OutlookApp.CreateItem(0)
    With OutlookMail
        .to = EnviarPara
        .CC = ""
        .BCC = ""
        .Subject = "Pedido enviado"
        .Body = Mensagem
        .Display ' para envia o email diretamente defina o código  .Send
    End With 
    Set OutlookMail = Nothing
    Set OutlookApp = Nothing
End Sub

Temos aqui o código da macro MandaEmail e a macro Envia_Emails() que recebe o endereço de email e a mensagem e envia ou apenas exibe o email.

Note que para testar eu estou usando o comando .Display que irá exibir os emails. Para enviar substitua pelo comando .Send.

Retorne ao Microsoft Excel e a seguir selecione o botão e altere o nome de Botão 1 para Enviar Emails:

Pronto ! agora podemos abrir a planilha Excel e clicar no botão Enviar Emails para enviar os emails.

Agora, basta clicar no botão Enviar e pronto !!!

Pegue a planilha com o código VBA aqui: VBA_MandaEmail.zip

Todavia digo-vos a verdade, que vos convém que eu vá; porque, se eu não for, o Consolador não virá a vós; mas, quando eu for, vo-lo enviarei.
E, quando ele vier, convencerá o mundo do pecado, e da justiça e do juízo.
Do pecado, porque não crêem em mim;
Da justiça, porque vou para meu Pai, e não me vereis mais;
E do juízo, porque já o príncipe deste mundo está julgado.

João 16:7-11

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?


José Carlos Macoratti