Τρόπος διέλευσης ενός δέντρου φακέλου αναδρομικά στο Outlook μέσω VBA

Κοινή χρήση τώρα:

Εάν υπάρχουν υποφάκελοι εντός του κύριου φακέλου Εισερχόμενα ή Απεσταλμένα, είναι μια πολύ χρήσιμη συμβουλή πώς να τους διασχίσετε με αναδρομικό και αποτελεσματικό τρόπο, χρησιμοποιώντας το VBA. Αυτό το κρίσιμο κομμάτι είναι επαναχρησιμοποιήσιμο σε πολλά άλλα έργα VBA.

Το κρίσιμο πρόβλημα της διέλευσης φακέλων

Δέντρο φακέλων στο OutlookΟι εταιρικοί και εμπορικοί χρήστες του Outlook συχνά καταλήγουν να έχουν εκατοντάδες υποφακέλους κάτω από τον κύριο φάκελο εισερχομένων ή απεσταλμένων, με σχετικά email σε καθέναν από αυτούς. Όταν υπάρχει ανάγκη να περάσετε από όλους αυτούς τους φακέλους για να εκτελέσετε κάποια ενέργεια στα email που περιέχονται σε αυτούς, γίνεται εφιάλτης να γράψετε διαφορετικά σενάρια VBA για διαφορετικούς φακέλους. Φανταστείτε να έχετε πεντακόσιους φακέλους κάτω από τον κύριο φάκελο Εισερχομένων και μια απαίτηση σεναρίου VBA για καθέναν από αυτούς. Ο χρήστης θα πρέπει να γράψει πεντακόσια μοναδικά σενάρια για καθέναν από αυτούς τους φακέλους, με παρόμοια λειτουργικότητα. Για να γίνει χειρότερο, εάν υπάρξει ανάγκη να γίνουν κάποιες τροποποιήσεις, θα πρέπει να ενημερωθούν και τα πεντακόσια σενάρια. Ευτυχώς, υπάρχει μια μεθοδολογία προγραμματισμού γνωστή ως αναδρομή, η οποία λύνει το πρόβλημά μας σαν παιχνίδι. Η ιδέα της αναδρομής είναι μια συνάρτηση να καλεί επανειλημμένα τον εαυτό της και να ακολουθεί το ίδιο μοτίβο ξανά και ξανά, προκειμένου να επεξεργαστεί όλα τα στοιχεία, με την ίδια λογική. Παρακάτω είναι ένα δείγμα σεναρίου που ξεκινά από τον κύριο φάκελο Εισερχομένων και επαναλαμβάνεται σε όλους τους υποφακέλους και τα στοιχεία σε καθέναν από αυτούς τους φακέλους.

Σενάριο 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 θα πρέπει να προστεθεί στις αναφορές έργου από τα μενού "Εργαλεία", όπου XX είναι η έκδοση της βιβλιοθήκης.

Κατανοήστε το σενάριο

Συνάρτηση αναδρομήςΗ συνάρτηση «ProcessCurrentFolder» είναι η αναδρομική συνάρτηση, η οποία καλείται από μόνη της, εάν εντοπιστεί ένας υποφάκελος μέσα στον τρέχοντα φάκελο. Θα συνεχίσει να ανακαλεί τον εαυτό της, εκτός εάν σαρωθούν και υποστούν επεξεργασία όλοι οι φάκελοι που ξεκινούν από την αρχική ιεραρχία. Αυτό το σενάριο θα λειτουργήσει με οποιονδήποτε φάκελο του Outlook. Το «olFolderInbox» μπορεί να αντικατασταθεί με το «olFolderSentMail», το «olFolderOutbox» ή μπορεί να είναι οποιοσδήποτε άλλος μη προεπιλεγμένος φάκελος του Outlook. Είναι επίσης σημαντικό να γνωρίζετε ότι δεν είναι απαραίτητο να κάνετε την αρχική κλήση από τον ριζικό φάκελο εισερχομένων ή εξερχομένων, αλλά μπορεί να ξεκινήσει να λειτουργεί από οποιονδήποτε φάκελο προς τα κάτω. Η συνάρτηση «For Each objMail In objParentFolder.Items» είναι η γραμμή κλειδιού που θα επαναλάβει όλα τα στοιχεία που περιέχονται στον τρέχοντα φάκελο που σαρώνεται. Επομένως, αυτό είναι το σημείο όπου ο χρήστης πρέπει να εισάγει τον απαιτούμενο κώδικα για την επεξεργασία των στοιχείων.

Ανάρρωση από την καταστροφή

Εάν αντιμετωπίσετε μια κατάσταση σφάλματος ή βλάβης του Outlook, δεν χρειάζεται να ανησυχείτε για τα χαμένα email, καθώς DataNumen θα επαναφέρει τη ζωή σας στο κανονικό διόρθωση της διαφθοράς του Outlook με αποτελεσματικό τρόπο.

Εισαγωγή συγγραφέα:

Η Mary Underwood είναι ειδικός ανάκτησης δεδομένων στο DataNumen, Inc., η οποία είναι ο παγκόσμιος ηγέτης στις τεχνολογίες ανάκτησης δεδομένων, συμπεριλαμβανομένων ανάκτηση dwg και rar προϊόντα λογισμικού ανάκτησης. Για περισσότερες πληροφορίες επισκεφθείτε www.datanumen.com

Κοινή χρήση τώρα:

Τα σχόλια είναι κλειστά.