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

12

Determinadas coisas não são possíveis usando as regras de e-mail padrão, como pesquisar assuntos ou corpos de mensagens com curingas. Você pode fazer várias palavras, mas não é o mesmo se você precisar das palavras um caractere longe um do outro. Como posso escrever meu próprio código do Visual Basic for Applications para filtrar o email do Outlook?

    
por Grant Bowman 16.10.2015 / 21:43

1 resposta

10

Olhei alto e baixo para todas essas partes necessárias para que esse filtro simples acontecesse. Os filtros do procmail do Unix são tão fáceis de usar por comparação. Todos os assistentes do Microsoft Outlook atrapalham o uso de um filtro simples usando curingas. Embora muitas condições de filtro de e-mail 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 traz o editor de código do VBA. Clique duas vezes em ThisOutlookSession. Escreva seu código. No meu caso, ele está usando um regex na linha de assunto e não o move para o DefaultFolder, mas 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 e-mail recebido com uma regra.

Em regras, selecione "Gerenciar regras e alertas ...". A nova regra será parecida com

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

Para obter isso, para a Etapa 1: Selecionar condição (s): basta clicar em próximo. Confirme se aplica a todas as mensagens clicando em OK. Para Selecionar ação (s), marque "executar um script" e clique para escolher o script de filtro e selecione Avançar ou Concluir. Para exceção de Select (s), clique em Next ou Finish. Dê um bom nome como vba-filter e marque Ativar esta regra. clique em Concluir. Já que ele copia para uma pasta local, clique em OK quando ele pedir para confirmar que essa regra não funcionará para o e-mail que você verificar on-line ou de 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 autografar suas macros crie um certificado e use-o .
por 16.10.2015 / 21:43