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

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

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

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

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

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

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

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

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

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

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

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

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

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