Blog

Postado em em 22 de outubro de 2021

Como Ler E-mails do Outlook e Colocar na Planilha com VBA

Quer saber como ler e-mails do Outlook utilizando o VBA para automatizar o seu trabalho e colocar todos eles em uma planilha do Excel?

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Nessa aula de hoje vamos te mostrar como ler e-mails do Outlook no Excel. Ou seja, vamos te mostrar como ler e-mails do Outlook com VBA.

Dessa forma você vai poder ler seus e-mails e trazer as informações para dentro do Excel.

Vamos te ensinar como ler e-mails com VBA e já pegar as informações de remetente, destinatário, assunto, data de recebimento e corpo do e-mail.

Então com um único clique você vai conseguir puxar todos os e-mails da sua caixa de entrada do Outlook e registrar tudo dentro do Excel.

Assim pode fazer suas automações para separar e-mails, então fica muito mais fácil para você identificar e-mails do trabalho, ou conteúdo que tenha uma informação específica.

E aí, quer aprender como criar macro para ler e-mails com Excel? Então vamos pra aula que tem bastante conteúdo irado!

Option Explicit

Sub lerEmails()

' Criando a aplicação do Outlook
Dim objOutlook As Object
Set objOutlook = CreateObject("Outlook.Application")

' Criando um Namespace, que seria uma sessão no Outlook
Dim objNSpace As Object
Set objNSpace = objOutlook.GetNamespace("MAPI")

' Cria um objeto com a pasta Inbox do Outlook
Dim minhaPasta As Object
Set minhaPasta = objNSpace.GetDefaultFolder(olFolderInbox)

Dim i As Long

Dim itemPasta As Object

i = 2 'Linha que vai começar preenchendo na planilha

' Percorrer todos os itens dentro da pasta
For Each itemPasta In minhaPasta.Items

   If itemPasta.Class = olMail Then
       Dim objEmail As Outlook.MailItem
        Set objEmail = itemPasta

Cells(i, 1).Value = objEmail.SenderEmailAddress

       Cells(i, 2).Value = objEmail.To
       Cells(i, 3).Value = objEmail.Subject
        Cells(i, 4).Value = objEmail.ReceivedTime
       Cells(i, 5).Value = objEmail.Body   
        Cells(i, 5).WrapText = False

    End If
   i = i + 1

Next

Set objEmail = Nothing
Set objOutlook = Nothing
Set objNSpace = Nothing
Set minhaPasta = Nothing

End Sub

Comentários sobre a macro lerEmails():

  • Vamos começar a sub com uma configuração para o módulo, em si: ativando o modo “Option Explicit”, que significa que seremos obrigados a declarar todas as variáveis usadas no código. Do contrário, seremos alertados com uma mensagem de erro.
  • Vamos começar dimensionando uma variável chamada “objOutlook” para receber e representar a aplicação do Outlook
  • Vamos “setar” a variável chamada “objOutlook”, que representará o objeto do programa do Outlook que será criado no começo pelo VBA
  • Precisaremos criar o chamado de NameSpace, o que seria entendido como a sessão do Outlook aberta: para isso precisaremos também dimensionar uma variável chamada “objNSpace” para representar a sessão do Outlook
  • Após definir, vamos setar a variável “objNSpace” para representar o objeto que será o NameSpace chamado de “MAPI”, porque é o único tipo suportado, nesse caso
  • Em seguida precisaremos definir uma variável “minhaPasta” como um objeto
  • Ela irá receber o objeto que vamos pegar das pastas padrão (default folder, em inglês) do nosso objNSpace, a pasta da caixa de entrada (folder inbox, em inglês)
  • Dimensionaremos uma variável “i” auxiliar como Long, que representará um número e outra variável chamada itemPasta como um objeto, usadas a seguir
  • A variável “i” vai representar a linha em que as informações vão começar a ser preenchidas na planilha, que no começo será a linha 2 porque na linha 1 temos o cabeçalho
  • A partir da estrutura de repetição For Each, vamos percorrer todos os itens dentro da pasta, que no caso serão todos os itemPasta dentro da minhaPasta
  • Através de uma estrutura If no VBA vamos verificar se a classe do itemPasta (item analisado) for do tipo e-mail (mail, em inglês)
  • Vamos dimensionar uma variável chamada de “objEmail” como o tipo item e-mail (MailItem, em inglês).
  • Em seguida vamos definir que o “objEmail” é igual ao “itemPasta”, para facilitar didaticamente
  • Até aqui nós conseguimos acessar a caixa de entrada do Outlook, e ler um e-mail dessa caixa de entrada. A partir daqui vamos ler as informações do e-mail, individualmente falando. Observe um exemplo abaixo:
    Imagem1 8
  • Então, as informações que vamos pegar de cada e-mail e o registro feito na nossa planilha, serão:
    • Na célula da linha representada pela variável “i” e de coluna A (coluna 1) vamos pegar o endereço de e-mail do remetente (SenderEmailAddress)
    • Na célula da linha representada pela variável “i” e de coluna B (coluna 2) vamos pegar o endereço de e-mail do destinatário (To)
    • Na célula da linha representada pela variável “i” e de coluna C (coluna 3) vamos pegar o assunto do e-mail (Subject)
    • Na célula da linha representada pela variável “i” e de coluna D (coluna 4) vamos pegar a data e hora que o e-maiil foi recebido (ReceivedTime)
    • Na célula da linha representada pela variável “i” e de coluna E (coluna 5) vamos pegar o corpo do e-mail em si, a mensagem de fato (Body)
    • Além de colocar a informação na coluna E, vamos também desativar (False) a quebra automática de linha (WrapText) naquela célula específica, para não desconfigurarmos a altura da linha da nossa planilha com tamanhos de corpos de e-mails diferentes
  • Ao pegar as informações desse e-mail, vamos acrescentar uma unidade na variável “i”, pular para a próxima linha na planilha e analisar um possível próximo e-mail, e continuar o processo inteiro novamente
  • Assim que se encerrar a passagem de informações, por boas práticas vamos apagar da memória (Nothing) as variáveis objEmail, objOutlook, objNSpace e minhaPasta, para que elas não ocupem espaço de memória enquanto a planilha estiver aberta
  • Se encerra o código

Observe um exemplo abaixo:
Imagem2 5

Quando rodarmos a macro, pelo botão criado, teremos o seguinte resultado:
Imagem3 4

Repare que a linha 3 preenchida acima tem as informações do e-mail que usamos de exemplo anteriormente.

Conclusão de Como Ler E-mails do Outlook

Vocês pediram e nós atendemos! Nessa aula você viu como ler e-mails do Outlook pelo VBA!

Isso quer dizer que nós utilizamos de macros no VBA para poder fazer essa automação e trazer informações dos seus e-mails para o Excel. Irado, não?

Além disso pudemos rever alguns conceitos no VBA, como: Estrutura de repetição For Each, Estrutura If, Variável no VBA, Objeto no VBA.

Até o próximo post, galera! Fique ligado no nosso canal do Youtube para mais conteúdo de VBA e Excel toda semana! Um abraço!

Hashtag Treinamentos

Para acessar outras publicações de VBA, clique aqui!


Quer aprender mais sobre VBA com um minicurso básico gratuito?

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador