Егер негізгі кіріс жәшігінде немесе жіберілген элементтер қалтасында ішкі қалталар болса, оларды 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.com