Come filtrare le e-mail di Outlook usando una regola con uno script VBA?


14

Alcune cose non sono possibili utilizzando le regole di posta elettronica predefinite come la ricerca di oggetti o corpi di messaggi con caratteri jolly. Puoi fare più parole ma non è lo stesso se hai bisogno di parole distanti tra loro. Come posso scrivere il mio codice Visual Basic Applications Edition per filtrare la posta elettronica di Outlook?

Risposte:


12

Ho guardato in alto e in basso per tutte queste parti necessarie per realizzare questo semplice filtro. I filtri procmail Unix sono così facili da usare al confronto. Tutte le procedure guidate di Microsoft Outlook si frappongono a un semplice filtro tramite caratteri jolly. Mentre molte condizioni del filtro e-mail fornite da Microsoft sono utili per impostazione predefinita, nulla può battere la flessibilità e la personalizzazione del codice in esecuzione.

  1. Scrivi il tuo codice

Alt-F11 visualizza l'editor di codice VBA. Fare doppio clic su ThisOutlookSession. Scrivi il tuo codice Nel mio caso sta usando un regex nella riga dell'oggetto e lo sposta non nella DefaultFolder ma nel mio pst in una sottocartella.

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. Esegui il codice per ogni e-mail in arrivo con una regola.

In regole seleziona "Gestisci regole e avvisi ...". La nuova regola sarà simile

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

Per ottenere ciò, per il Passaggio 1: selezionare le condizioni: basta fare clic su Avanti. Conferma che si applica a tutti i messaggi facendo clic su OK. Per Seleziona azione / i selezionare "Esegui uno script", quindi fare clic per selezionare lo script del filtro e selezionare Avanti o Fine. Per Seleziona eccezioni, fare clic su Avanti o Fine. Dagli un buon nome come vba-filter e seleziona Attiva questa regola. fai clic su Fine. Poiché copia in una cartella locale, fai clic su OK quando chiede di confermare che questa regola non funzionerà per le e-mail che controlli online o da un altro dispositivo. Fare clic su OK nella finestra di dialogo Regole e avvisi.

  1. Outlook non piace quando le macro non sono firmate. Per autofirmare le tue macro, crea un certificato e usalo .

Ho letto molte altre soluzioni parziali come le macro e la creazione di colonne definite dall'utente. Ciò consente l'ordinamento dell'interfaccia utente o il filtro di visualizzazione, ma ciò modificherà tutti i messaggi quando arrivano, il che non è quello che volevo fare.
Grant Bowman,

1
Il mio client outlook disabiliterebbe in modo incoerente la regola per eseguire vbscript vba-filter all'avvio di Outlook. Ciò ha causato problemi. C'è anche un limite di caratteri sul vbscript da aggiungere a ciascuna regola. Perché funzionino in modo coerente, anche se con meno flessibilità, riscrivo i filtri usando i filtri standard di Outlook in modo che funzionassero sempre.
Grant Bowman,

2
Mancava questa opzione per eseguire uno script. Ho trovato un link correlato qui: slipstick.com/outlook/rules/outlook-2016-run-a-script-rules
Jayan

Il codice sopra non funziona per me. Ho inserito Abc.20 nel file oggetto ma i messaggi non escono mai dalla Posta in arrivo.
Tensigh,

1
Usando la finestra di debug sono riuscito a far funzionare regex. Ora si tratta solo di spostarsi nelle cartelle giuste. Penso di poterlo capire. Grazie per l'aiuto.
Tensigh,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.