受信トレイの下のフォルダのすべてのアイテムを受信トレイに移動し、フォルダを削除するマクロ


コメントにて以下のようなご要望をいただきました。


受信トレイの中の階層フォルダにあるすべてのメールを受信トレイに移動し、
受信トレイ以外の階層フォルダのすべてを削除するマクロをおねがいしたい


このようなご要望を満たすマクロは以下のようになります。ポイントは再帰呼び出しと、移動や削除の場合は For Each は使えない、という点です。

' ここをトリプルクリックでマクロ全体を選択できます。
'
Public Sub MoveAllItemsToInbox()
    Dim objInbox ' As Folder
    Dim i As Integer
    Set objInbox = Session.GetDefaultFolder(olFolderInbox)
    For i = objInbox.Folders.Count To 1 Step -1
        MoveItemsToInboxRecursive objInbox.Folders(i), objInbox
    Next
End Sub
' 再帰的にフォルダを巡回してアイテムを移動するプロシージャ
Private Sub MoveItemsToInboxRecursive(objFolder As Variant, objInbox As Variant)
    Dim objSubFolder 'As Folder
    Dim i As Integer
    ' すべてのアイテムを受信トレイに移動
    For i = objFolder.Items.Count To 1 Step -1
        objFolder.Items(i).Move objInbox
    Next
    ' すべてのサブフォルダについて自分自身を再帰的に呼び出す
    For i = objFolder.Folders.Count To 1 Step -1
        MoveItemsToInboxRecursive objFolder.Folders(i), objInbox
    Next
    ' 処理が終わったフォルダ自体を削除
    objFolder.Delete
End Sub

マクロの登録方法やメニューへの追加について

受信トレイの下のフォルダのすべてのアイテムを受信トレイに移動し、フォルダを削除するマクロ」への1件のフィードバック

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中