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.
- 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
- 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.
- O Outlook não gosta quando as macros não são assinadas. Para autografar suas macros crie um certificado e use-o .