メインの受信トレイまたは送信済みアイテムフォルダー内にサブフォルダーがある場合、VBAを使用して、再帰的かつ効率的な方法でそれらをトラバースする方法は、非常に役立つヒントです。 この重要な部分は、他の多くのVBAプロジェクトで再利用できます。
フォルダをトラバースする際の重大な問題
Outlook の企業ユーザーや商用ユーザーは、メインの受信トレイや送信済みアイテム フォルダーの下に、関連するメールがそれぞれ格納された数百ものサブフォルダーを持つことがよくあります。これらのフォルダーすべてを調べて、その中に含まれるメールに対して何らかのアクションを実行する必要が生じた場合、フォルダーごとに異なる VBA スクリプトを作成するのは悪夢になります。メインの受信トレイ フォルダーの下に 500 個のフォルダーがあり、それぞれに VBA スクリプトが必要であることを想像してみてください。ユーザーは、同様の機能を持つ 500 個の固有のスクリプトを各フォルダーごとに作成する必要があります。さらに悪いことに、何らかの変更が必要になった場合、500 個すべてのスクリプトを更新する必要があります。幸いなことに、再帰と呼ばれるプログラミング手法があり、この問題を簡単に解決できます。再帰の考え方は、関数が繰り返し自身を呼び出し、同じロジックですべてのアイテムを処理するために同じパターンを何度も繰り返すことです。以下は、メインの受信トレイフォルダから開始し、各フォルダ内のすべてのサブフォルダとその中のアイテムを順に処理するサンプルスクリプトです。
OutlookVBAスクリプト
以下は完全なOutlookVBAスクリプトです。
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リカバリ (NAIST) と rar 回復ソフトウェア製品。 詳細については、次のWebサイトをご覧ください。 WWW。datanumen.com