Como filtrar email do Outlook usando uma regra com um script VBA?


14

Algumas coisas não são possíveis usando as regras de email padrão, como pesquisar assuntos ou corpos de mensagens com curingas. Você pode fazer várias palavras, mas não é a mesma coisa se precisar das palavras um caracter um do outro. Como escrever meu próprio código do Visual Basic for Applications para filtrar os emails do Outlook?

Respostas:


12

Eu olhei alto e baixo para todas essas peças necessárias para fazer esse filtro simples acontecer. Os filtros procmail do Unix são tão fáceis de usar em comparação. Todos os assistentes do Microsoft Outlook impedem um filtro simples usando curingas. Embora muitas condições de filtro de email que a Microsoft fornece por padrão sejam úteis, nada pode superar a flexibilidade e a personalização do código em execução.

  1. Escreva seu código.

Alt-F11 abre o editor de código VBA. Clique duas vezes em ThisOutlookSession. Escreva seu código. No meu caso, ele está usando um regex na linha de assunto e movendo-o não para o DefaultFolder, mas para o meu próprio pst em uma subpasta.

Sub filter(Item As Outlook.MailItem)
    Dim ns As Outlook.NameSpace
    Dim MailDest As Outlook.Folder
    Set ns = Application.GetNamespace("MAPI")
    Set Reg1 = CreateObject("VBScript.RegExp")
    Reg1.Global = True
    Reg1.Pattern = "(.*Abc.20.*)"
    If Reg1.Test(Item.Subject) Then
        Set MailDest = ns.Folders("Personal Folders").Folders("one").Folders("a")
        Item.Move MailDest
    End If
End Sub
  1. Execute o código para cada email recebido com uma regra.

Nas regras, selecione "Gerenciar regras e alertas ...". A nova regra será semelhante

Apply this rule after the message arrives run Project1.ThisOutlookSession.filter

Para obter isso, na Etapa 1: Selecione a (s) condição (s): basta clicar em Avançar. Confirme se isso se aplica a todas as mensagens clicando em OK. Para Selecionar ações, selecione "executar um script" e clique para escolher o script de filtro e selecione Avançar ou Concluir. Para Selecionar exceção (s), clique em Avançar ou Concluir. Dê um bom nome como vba-filter e marque Ativar esta regra. clique em Concluir. Como ele copia para uma pasta local, clique em OK quando pedir para confirmar que esta regra não funcionará no email que você verifica online ou em outro dispositivo. Clique em OK na caixa de diálogo Regras e alertas.

  1. O Outlook não gosta quando as macros não são assinadas. Para autoassinar suas macros, crie um certificado e use-o .

Eu li sobre muitas outras soluções parciais, como macros e criação de colunas definidas pelo usuário. Isso permite a classificação da interface do usuário ou a visualização da filtragem, mas isso editará todas as mensagens que forem recebidas, o que não é o que eu queria fazer.
Grant Bowman

1
Meu cliente do Outlook desativaria inconsistentemente a regra para executar o vbscript vba-filter ao iniciar o Outlook. Isso causou problemas. Há também um limite de caracteres no vbscript a ser adicionado a cada regra. Para eles funcionarem de maneira consistente, embora com menos flexibilidade, reescrevi os filtros usando os filtros padrão do Outlook para que funcionassem o tempo todo.
Grant Bowman

2
Esta opção para executar um script estava ausente. Encontrou um link relacionado aqui: slipstick.com/outlook/rules/outlook-2016-run-a-script-rules
Jayan

O código acima não funciona para mim. Coloquei o Abc.20 no arquivo do assunto, mas as mensagens nunca saem da Caixa de entrada.
Tensigh 15/07/19

1
Usando a janela de depuração, consegui que o regex funcionasse. Agora é só mudar para as pastas certas. Eu acho que posso descobrir. Obrigado pela ajuda.
Tensigh 18/07/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.