Bagaimana cara memfilter email Outlook menggunakan Aturan dengan skrip VBA?

14

Hal-hal tertentu tidak dimungkinkan menggunakan aturan email default seperti mencari subjek atau badan pesan dengan wildcard. Anda dapat melakukan beberapa kata tetapi tidak sama jika Anda membutuhkan kata-kata satu karakter dari satu sama lain. Bagaimana saya bisa menulis kode Visual Basic for Applications saya sendiri untuk memfilter email Outlook?

Grant Bowman
sumber

Jawaban:

12

Saya tampak tinggi dan rendah untuk semua bagian yang diperlukan untuk membuat filter sederhana ini terjadi. Filter unix procmail sangat mudah digunakan sebagai perbandingan. Semua penyihir Microsoft Outlook menghalangi filter sederhana menggunakan wildcard. Sementara banyak kondisi filter email yang disediakan oleh Microsoft secara default berguna, tidak ada yang dapat mengalahkan fleksibilitas dan penyesuaian kode yang sedang berjalan.

  1. Tulis kode Anda.

Alt-F11 menampilkan editor kode VBA. Klik dua kali pada ThisOutlookSession. Tulis kode Anda. Dalam kasus saya ini menggunakan regex pada baris subjek dan memindahkannya bukan ke DefaultFolder tetapi pst saya sendiri dalam subfolder.

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. Jalankan kode untuk setiap email yang masuk dengan Aturan.

Di bawah aturan pilih "Kelola Aturan dan Pemberitahuan ...". Aturan baru akan terlihat seperti

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

Untuk mendapatkan ini, untuk Langkah 1: Pilih kondisi: cukup klik berikutnya. Konfirmasikan itu berlaku untuk semua pesan dengan mengklik OK. Untuk tindakan Pilih, centang "jalankan skrip" lalu klik untuk memilih skrip filter dan pilih Berikutnya atau Selesai. Untuk Pilih pengecualian, klik Berikutnya atau Selesai. Berikan nama yang bagus seperti vba-filter dan centang Aktifkan aturan ini. klik Selesai. Karena ini berlaku untuk folder lokal, klik OK ketika diminta untuk mengkonfirmasi aturan ini tidak akan berfungsi untuk email yang Anda periksa online atau dari perangkat lain. Klik OK untuk kotak dialog Aturan dan Pemberitahuan.

  1. Outlook tidak menyukainya ketika makro tidak ditandatangani. Untuk menandatangani sendiri makro Anda buat sertifikat dan gunakan .
Grant Bowman
sumber
Saya membaca tentang banyak solusi parsial lain seperti makro dan membuat kolom yang ditentukan pengguna. Ini memungkinkan UI menyortir atau melihat pemfilteran tetapi itu akan mengedit semua pesan saat pesan itu datang yang bukan yang ingin saya lakukan.
Grant Bowman
1
Klien prospek saya akan secara tidak konsisten menonaktifkan aturan untuk menjalankan vbscript vba-filter saat memulai prospek. Ini menyebabkan masalah. Ada juga batasan karakter pada vbscript untuk ditambahkan ke setiap aturan. Agar mereka bekerja secara konsisten, walaupun dengan fleksibilitas yang lebih sedikit, saya menulis ulang filter menggunakan filter Outlook standar sehingga mereka akan bekerja sepanjang waktu.
Grant Bowman
2
Opsi ini untuk menjalankan skrip tidak ada. Menemukan tautan terkait di sini: slipstick.com/outlook/rules/outlook-2016-run-a-script-rules
Jayan
Kode di atas tidak berfungsi untuk saya. Saya menempatkan Abc.20 di file subjek tetapi pesan tidak pernah keluar dari Kotak Masuk.
Tensigh
1
Menggunakan jendela debug saya berhasil membuat regex berfungsi. Sekarang tinggal memindahkan ke folder yang tepat. Saya pikir saya bisa mengetahuinya. Terima kasih atas bantuan Anda.
Tensigh