როგორ გადავკვეთოთ ფოლდერის ხე რეკურსიულად Outlook-ში VBA-ის საშუალებით

გააზიარე ახლა:

თუ არის ქვესაქაღალდეები მთავარ Inbox-ში ან Sent Items საქაღალდეში, თუ როგორ უნდა გადახვიდეთ მათ რეკურსიული და ეფექტური გზით, VBA-ს გამოყენებით, ძალიან სასარგებლო რჩევაა. ეს კრიტიკული ნაწილი ხელახლა გამოიყენება ბევრ სხვა VBA პროექტში.

საქაღალდეების გადაადგილების კრიტიკული პრობლემა

საქაღალდის ხე Outlook-შიOutlook-ის კორპორატიულ და კომერციულ მომხმარებლებს ხშირად აქვთ ასობით ქვესაქაღალდე მათი მთავარი შემოსულების ან გაგზავნილი წერილების საქაღალდის ქვეშ, თითოეულში შესაბამისი ელფოსტებით. როდესაც საჭიროა ყველა ამ საქაღალდის გადახედვა მათში შემავალ ელფოსტაზე რაიმე ქმედების შესასრულებლად, სხვადასხვა საქაღალდისთვის სხვადასხვა 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 Outlook VBA რედაქტორის გასახსნელად და ზემოთ მოცემული კოდის „ThisOutlookSession“-ში ჩასასმელად, მნიშვნელოვანია იცოდეთ, რომ ამ სკრიპტის გაშვებამდე, Microsoft Outlook XX ობიექტის ბიბლიოთეკა პროექტის მითითებებს „ინსტრუმენტების“ მენიუდან უნდა დაემატოს, სადაც XX ბიბლიოთეკის ვერსიაა.

სკრიპტის გაგება

რეკურსიის ფუნქცია„ProcessCurrentFolder“ არის რეკურსიული ფუნქცია, რომელიც გამოიძახებს საკუთარ თავს, თუ მიმდინარე საქაღალდეში აღმოჩენილია ქვესაქაღალდე. ის გააგრძელებს საკუთარი თავის გამოძახებას მანამ, სანამ საწყისი იერარქიიდან დაწყებული ყველა საქაღალდე არ დასკანირდება და არ დამუშავდება. ეს სკრიპტი იმუშავებს Outlook-ის ნებისმიერ საქაღალდესთან. „olFolderInbox“ შეიძლება შეიცვალოს „olFolderSentMail“-ით, „olFolderOutbox“-ით ან შეიძლება იყოს ნებისმიერი სხვა არასტანდარტული Outlook-ის საქაღალდე. ასევე მნიშვნელოვანია იცოდეთ, რომ საწყისი ზარის განხორციელება აუცილებელი არ არის root inbox ან outbox საქაღალდიდან, მაგრამ მას შეუძლია მუშაობა დაიწყოს ნებისმიერი საქაღალდიდან ქვემოთ. „For Each objMail In objParentFolder.Items“ არის საკვანძო ხაზი, რომელიც იტერაციას გაუწევს მიმდინარე საქაღალდეში შემავალ ყველა ელემენტს; შესაბამისად, ეს არის ადგილი, სადაც მომხმარებელმა უნდა შეიყვანოს საჭირო კოდი ელემენტების დასამუშავებლად.

გამოჯანმრთელება კატასტროფისგან

თუ Outlook-ის გაფუჭების ან გაუმართაობის წინაშე აღმოჩნდებით, დაკარგული ელფოსტის შესახებ ფიქრი საჭირო არ არის, რადგან DataNumen დააბრუნებს თქვენს ცხოვრებას ნორმალურად Outlook-ის კორუფციის გამოსწორება ეფექტური გზით.

ავტორი შესავალი:

მერი ანდერვუდი არის მონაცემთა აღდგენის ექსპერტი DataNumen, Inc., რომელიც მსოფლიო ლიდერია მონაცემთა აღდგენის ტექნოლოგიებში, მათ შორის dwg-ის აღდგენა მდე rar აღდგენის პროგრამული პროდუქტები. დამატებითი ინფორმაციისთვის ეწვიეთ www.datanumen. ერთად

გააზიარე ახლა:

კომენტარები დახურულია.