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

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