หากมีโฟลเดอร์ย่อยภายในกล่องขาเข้าหลักหรือโฟลเดอร์รายการที่ถูกส่งวิธีการข้ามผ่านโฟลเดอร์เหล่านี้ด้วยวิธีการเรียกซ้ำและมีประสิทธิภาพโดยใช้ VBA เป็นเคล็ดลับที่มีประโยชน์มาก ชิ้นสำคัญนี้สามารถนำมาใช้ซ้ำได้ในโครงการ VBA อื่น ๆ อีกมากมาย
ปัญหาที่สำคัญของการข้ามโฟลเดอร์
ผู้ใช้งาน Outlook ในองค์กรและเชิงพาณิชย์มักจะมีโฟลเดอร์ย่อยหลายร้อยโฟลเดอร์อยู่ภายใต้โฟลเดอร์กล่องจดหมายเข้าหรือโฟลเดอร์ส่งหลัก โดยแต่ละโฟลเดอร์ย่อยจะมีอีเมลที่เกี่ยวข้องอยู่ เมื่อจำเป็นต้องเข้าไปตรวจสอบอีเมลในทุกโฟลเดอร์เหล่านั้น การเขียนสคริปต์ VBA ที่แตกต่างกันสำหรับแต่ละโฟลเดอร์จึงกลายเป็นเรื่องยุ่งยาก ลองนึกภาพว่ามีโฟลเดอร์ห้าร้อยโฟลเดอร์อยู่ภายใต้โฟลเดอร์กล่องจดหมายเข้าหลัก และต้องใช้สคริปต์ VBA สำหรับแต่ละโฟลเดอร์ ผู้ใช้จะต้องเขียนสคริปต์ที่ไม่ซ้ำกันห้าร้อยสคริปต์สำหรับแต่ละโฟลเดอร์เหล่านั้น โดยมีฟังก์ชันการทำงานที่คล้ายกัน และที่แย่ไปกว่านั้น หากจำเป็นต้องแก้ไขใดๆ สคริปต์ทั้งห้าร้อยสคริปต์จะต้องได้รับการอัปเดต โชคดีที่มีวิธีการเขียนโปรแกรมที่เรียกว่าการเรียกซ้ำ (recursion) ซึ่งช่วยแก้ปัญหานี้ได้อย่างง่ายดาย แนวคิดของการเรียกซ้ำคือการที่ฟังก์ชันเรียกตัวเองซ้ำๆ และทำตามรูปแบบเดิมซ้ำแล้วซ้ำเล่า เพื่อประมวลผลรายการทั้งหมดด้วยตรรกะเดียวกัน ด้านล่างนี้คือตัวอย่างสคริปต์ที่เริ่มต้นจากโฟลเดอร์กล่องจดหมายเข้าหลักและวนซ้ำผ่านโฟลเดอร์ย่อยและรายการทั้งหมดในแต่ละโฟลเดอร์เหล่านั้น
สคริปต์ Outlook VBA
ด้านล่างนี้คือสคริปต์ Outlook VBA ฉบับสมบูรณ์:
Private Sub Main()
Dim objNameSpace As Outlook.NameSpace
Dim objMainFolder As Outlook.Folder
Set objNameSpace = Application.GetNamespace("MAPI")
Set objMainFolder = objNameSpace.GetDefaultFolder(olFolderInbox)
Call ProcessCurrentFolder(objMainFolder)
End Sub
Private Sub ProcessCurrentFolder(ByVal objParentFolder As Outlook.MAPIFolder)
Dim objCurFolder As Outlook.MAPIFolder
Dim objMail As Outlook.MailItem
On Error Resume Next
' Process each items in the folder
For Each objMail In objParentFolder.Items
' Do your task here ...
Next
' Process the subfolders in the folder recursively
If (objParentFolder.Folders.Count > 0) Then
For Each objCurFolder In objParentFolder.Folders
Call ProcessCurrentFolder(objCurFolder)
Next
End If
End Sub
วิธีเรียกใช้สคริปต์
ข่าวประชาสัมพันธ์ Alt + F11 เปิดตัวแก้ไข VBA ของ Outlook แล้ววางโค้ดด้านบนลงใน “ThisOutlookSession” สิ่งสำคัญคือ ก่อนที่จะเรียกใช้สคริปต์นี้ คุณต้องเพิ่มไลบรารี Microsoft Outlook XX Object ลงในการอ้างอิงโปรเจ็กต์จากเมนู “เครื่องมือ” โดยที่ XX คือเวอร์ชันของไลบรารี
ทำความเข้าใจสคริปต์

กู้คืนจากภัยพิบัติ
หากคุณประสบปัญหา Outlook ขัดข้องหรือทำงานผิดปกติ ไม่ต้องกังวลเรื่องอีเมลสูญหาย เพราะ... DataNumen จะทำให้ชีวิตของคุณกลับมาเป็นปกติโดย แก้ไขความเสียหายของ Outlook อย่างมีประสิทธิภาพ
บทนำผู้เขียน:
Mary Underwood เป็นผู้เชี่ยวชาญด้านการกู้คืนข้อมูลใน DataNumen, Inc. ซึ่งเป็นผู้นำระดับโลกด้านเทคโนโลยีการกู้คืนข้อมูล ได้แก่ การกู้คืน dwg และ rar ผลิตภัณฑ์ซอฟต์แวร์กู้คืน ดูข้อมูลเพิ่มเติมได้ที่ wwwdatanumenด้วย.