จะกรองอีเมล Outlook โดยใช้ Rule ด้วยสคริปต์ VBA ได้อย่างไร


13

บางสิ่งเป็นไปไม่ได้โดยใช้กฎอีเมลเริ่มต้นเช่นการค้นหาหัวเรื่องหรือเนื้อหาข้อความด้วยสัญลักษณ์แทน คุณสามารถทำหลายคำได้ แต่ไม่เหมือนกันถ้าคุณต้องการคำที่มีอักขระหนึ่งตัวห่างกัน ฉันจะเขียน Visual Basic ของฉันเองสำหรับรหัสแอปพลิเคชันเพื่อกรองอีเมล Outlook ได้อย่างไร

คำตอบ:


11

ฉันดูสูงและต่ำสำหรับชิ้นส่วนเหล่านี้ทั้งหมดที่จำเป็นเพื่อให้ตัวกรองแบบง่าย ๆ นี้เกิดขึ้น ตัวกรอง procmail Unix นั้นใช้งานง่ายโดยการเปรียบเทียบ ตัวช่วยสร้าง Microsoft Outlook ทั้งหมดได้รับตัวกรองอย่างง่ายโดยใช้สัญลักษณ์แทน ในขณะที่เงื่อนไขการกรองอีเมลจำนวนมากที่ Microsoft มีให้ตามค่าเริ่มต้นจะไม่มีประโยชน์ใดที่สามารถเอาชนะความยืดหยุ่นและการปรับแต่งโค้ดที่ใช้งานได้

  1. เขียนรหัสของคุณ

Alt-F11 เปิดตัวโปรแกรมแก้ไขโค้ด VBA ดับเบิลคลิกที่ ThisOutlookSession เขียนรหัสของคุณ ในกรณีของฉันมันใช้ regex ในหัวเรื่องและย้ายไม่ใช่ไปที่ DefaultFolder แต่เป็น pst ของฉันเองในโฟลเดอร์ย่อย

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. เรียกใช้รหัสสำหรับอีเมลขาเข้าแต่ละรายการด้วยกฎ

ภายใต้กฎให้เลือก "จัดการกฎและการแจ้งเตือน ... " กฎใหม่จะมีลักษณะดังนี้

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

ในการรับสิ่งนี้สำหรับขั้นตอนที่ 1: เลือกเงื่อนไข: เพียงคลิกถัดไป ยืนยันว่าใช้กับข้อความทั้งหมดโดยคลิกตกลง สำหรับเลือกการกระทำเลือก "เรียกใช้สคริปต์" จากนั้นคลิกเพื่อเลือกสคริปต์ตัวกรองและเลือกถัดไปหรือเสร็จสิ้น สำหรับเลือกข้อยกเว้นคลิกถัดไปหรือเสร็จสิ้น ตั้งชื่อที่ดีเช่น vba-filter และทำเครื่องหมายเปิดกฎนี้ คลิกเสร็จสิ้น เนื่องจากมันไปยังโฟลเดอร์ในเครื่องคลิกตกลงเมื่อระบบขอให้ยืนยันว่ากฎนี้ใช้ไม่ได้กับอีเมลที่คุณตรวจสอบออนไลน์หรือจากอุปกรณ์อื่น คลิกตกลงไปที่กล่องโต้ตอบกฎและการแจ้งเตือน

  1. Outlook ไม่ชอบเมื่อแมโครไม่ได้ลงชื่อ เพื่อให้ตัวเองเข้าสู่ระบบมาโครของคุณสร้างใบรับรองและใช้

ฉันอ่านเกี่ยวกับโซลูชันบางส่วนอื่น ๆ จำนวนมากเช่นมาโครและการสร้างคอลัมน์ที่ผู้ใช้กำหนด สิ่งนี้ช่วยให้การเรียงลำดับ UI หรือดูการกรอง แต่จะแก้ไขข้อความทั้งหมดที่มาซึ่งไม่ใช่สิ่งที่ฉันต้องการจะทำ
Grant Bowman

1
ไคลเอนต์ outlook ของฉันจะปิดใช้งานกฎอย่างไม่สอดคล้องกันเพื่อเรียกใช้ vbscript vba-filter เมื่อเริ่มต้น outlook ทำให้เกิดปัญหา นอกจากนี้ยังมีการ จำกัด จำนวนอักขระใน vbscript เพื่อเพิ่มในแต่ละกฎ เพื่อให้ทำงานได้อย่างสม่ำเสมอแม้ว่าจะมีความยืดหยุ่นน้อยลงฉันเขียนตัวกรองใหม่โดยใช้ตัวกรอง Outlook มาตรฐานเพื่อให้ตัวกรองทำงานได้ตลอดเวลา
โบว์แมน

2
ตัวเลือกในการเรียกใช้สคริปต์นี้หายไป พบลิงค์ที่เกี่ยวข้องที่นี่: slipstick.com/outlook/rules/outlook-2016-run-a-script-rules
Jayan

รหัสด้านบนใช้ไม่ได้สำหรับฉัน ฉันใส่ Abc.20 ในไฟล์หัวเรื่อง แต่ข้อความไม่เคยย้ายออกจากกล่องจดหมาย
Tensigh

1
การใช้หน้าต่างแก้ไขข้อบกพร่องฉันจัดการเพื่อให้ regex ทำงาน ตอนนี้เป็นเพียงเรื่องของการย้ายไปยังโฟลเดอร์ที่เหมาะสม ฉันคิดว่าฉันสามารถคิดออก ขอบคุณสำหรับความช่วยเหลือของคุณ.
Tensigh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.