Làm cách nào để lọc email Outlook bằng cách sử dụng Quy tắc với tập lệnh VBA?


14

Một số điều không thể thực hiện được bằng cách sử dụng các quy tắc e-mail mặc định như tìm kiếm chủ đề hoặc nội dung thư bằng ký tự đại diện. Bạn có thể làm nhiều từ nhưng nó không giống nhau nếu bạn cần các từ cách nhau một ký tự. Làm cách nào tôi có thể viết mã Visual Basic for Application của riêng mình để lọc email Outlook?

Câu trả lời:


12

Tôi đã nhìn cao và thấp cho tất cả các bộ phận cần thiết để thực hiện bộ lọc đơn giản này. Bộ lọc Unix procmail rất dễ sử dụng bằng cách so sánh. Tất cả các trình hướng dẫn Microsoft Outlook có được một bộ lọc đơn giản bằng cách sử dụng các ký tự đại diện. Mặc dù nhiều điều kiện lọc email, Microsoft cung cấp theo mặc định là hữu ích, không có gì có thể đánh bại tính linh hoạt và tùy chỉnh của mã đang chạy.

  1. Viết mã của bạn.

Alt-F11 mang đến trình soạn thảo mã VBA. Nhấp đúp chuột vào ThisOutlookSession. Viết mã của bạn. Trong trường hợp của tôi, nó sử dụng biểu thức chính trên dòng chủ đề và chuyển nó không phải vào DefaultFolder mà là pst của riêng tôi trong thư mục con.

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. Chạy mã cho mỗi email đến với một Quy tắc.

Theo quy tắc, chọn "Quản lý quy tắc và cảnh báo ...". Quy tắc mới sẽ như thế nào

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

Để có được điều này, cho Bước 1: Chọn (các) điều kiện: chỉ cần nhấp vào tiếp theo. Xác nhận nó áp dụng cho tất cả các tin nhắn bằng cách nhấn OK. Đối với Chọn hành động, hãy kiểm tra "chạy tập lệnh", sau đó nhấp để chọn tập lệnh lọc và chọn Tiếp hoặc Hoàn tất. Đối với Chọn ngoại lệ, bấm Tiếp theo hoặc Kết thúc. Đặt cho nó một cái tên hay như bộ lọc vba và kiểm tra Bật quy tắc này. nhấp vào Kết thúc. Vì nó đối phó với một thư mục cục bộ, nhấp vào OK khi nó yêu cầu xác nhận quy tắc này sẽ không hoạt động đối với email bạn kiểm tra trực tuyến hoặc từ một thiết bị khác. Bấm OK vào hộp thoại Quy tắc và Cảnh báo.

  1. Outlook không thích nó khi macro không được ký. Để tự ký các macro của bạn, hãy tạo một chứng chỉ và sử dụng nó .

Tôi đọc về rất nhiều giải pháp bộ phận khác như macro và tạo các cột do người dùng xác định. Điều này cho phép sắp xếp giao diện người dùng hoặc xem lọc nhưng điều đó sẽ chỉnh sửa tất cả các tin nhắn khi chúng đến không phải là điều tôi muốn làm.
Grant Bowman

1
Khách hàng triển vọng của tôi sẽ vô hiệu hóa quy tắc để chạy bộ lọc vbacript vbscript khi bắt đầu triển vọng. Điều này gây ra vấn đề. Ngoài ra còn có một giới hạn ký tự trên vbscript để thêm vào mỗi quy tắc. Để chúng hoạt động ổn định, mặc dù ít linh hoạt hơn, tôi đã viết lại các bộ lọc bằng các bộ lọc Outlook tiêu chuẩn để chúng hoạt động mọi lúc.
Grant Bowman

2
Tùy chọn này để chạy một kịch bản bị thiếu. Tìm thấy một liên kết có liên quan ở đây: slipstick.com/outlook/rules/outlook-2016-run-a-script-rules
Jayan

Các mã ở trên không làm việc cho tôi. Tôi đặt Abc.20 trong tệp chủ đề nhưng các tin nhắn không bao giờ di chuyển ra khỏi Hộp thư đến.
Hàng chục

1
Sử dụng cửa sổ gỡ lỗi tôi quản lý để làm cho regex hoạt động. Bây giờ chỉ là vấn đề di chuyển đến đúng thư mục. Tôi nghĩ rằng tôi có thể tìm ra nó. Cảm ơn bạn đã giúp đỡ.
Hàng chục
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.