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

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