VBA арқылы қалта ағашын Outlook бағдарламасында рекурсивті түрде қалай өтуге болады

Қазір бөлісу:

Егер негізгі кіріс жәшігінде немесе жіберілген элементтер қалтасында ішкі қалталар болса, оларды 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 қалтасы болуы мүмкін. Сондай-ақ, бастапқы қоңырауды түбірлік кіріс қалтасынан немесе шығыс қалтасынан жасаудың қажеті жоқ екенін, бірақ кез келген қалтадан төмен қарай жұмыс істей бастайтынын білу маңызды. «For Every objMail In objParentFolder.Items» - сканерленіп жатқан ағымдағы қалтадағы барлық элементтер арқылы қайталанатын кілт жолы; сондықтан пайдаланушы элементтерді өңдеу үшін қажетті кодты енгізуі керек жер осы.

Апаттан қалпына келтіру

Егер сіз Outlook бағдарламасының істен шығуына немесе істен шығуына тап болсаңыз, жоғалған электрондық пошталар туралы алаңдаудың қажеті жоқ, себебі DataNumen сіздің өміріңізді қалыпқа келтіреді Outlook-тағы сыбайластықты түзету тиімді жолмен.

Автордың кіріспесі:

Мэри Андервуд - деректерді қалпына келтіру бойынша сарапшы DataNumen, Соның ішінде деректерді қалпына келтіру технологиялары бойынша әлемдік көшбасшы болып табылатын Inc. dwg қалпына келтіру және rar қалпына келтіру бағдарламалық жасақтама өнімдері. Қосымша ақпарат алу үшін кіріңіз WWW.datanumen.com

Қазір бөлісу:

Пікірлер жабылды.