Εάν υπάρχουν υποφάκελοι εντός του κύριου φακέλου Εισερχόμενα ή Απεσταλμένα, είναι μια πολύ χρήσιμη συμβουλή πώς να τους διασχίσετε με αναδρομικό και αποτελεσματικό τρόπο, χρησιμοποιώντας το VBA. Αυτό το κρίσιμο κομμάτι είναι επαναχρησιμοποιήσιμο σε πολλά άλλα έργα VBA.
Το κρίσιμο πρόβλημα της διέλευσης φακέλων
Οι εταιρικοί και εμπορικοί χρήστες του 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 είναι η έκδοση της βιβλιοθήκης.
Κατανοήστε το σενάριο

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