削除済みアイテム フォルダに含まれるアイテムからリンクされているファイルを削除するマクロ


先々週、「添付ファイルをディスクに保存し、そのファイルへのリンクをメッセージの添付ファイルと置き換えるマクロ」を紹介しましたが、こちらについて「アイテムを削除する際にリンクされているファイルも削除されると良いのでは」というご意見を頂きました。
アイテムの削除についてはイベントが発生しないため、マクロでハンドルすることはできませんが、削除済みアイテム フォルダにあるアイテムからリンクされているファイルなら削除可能なため、そのようなマクロを作ってみました。SAVE_DIR には「添付ファイルをディスクに保存し、そのファイルへのリンクをメッセージの添付ファイルと置き換えるマクロ」で指定したフォルダと同じフォルダを指定します。
このプロシージャを Application_Quit イベントの中で呼び出すようにしておけば、Outlook の終了時に自動的に削除済みアイテムからリンクされているファイルが削除されます。
なお、このマクロで削除したファイルはゴミ箱からは復元できませんので、ご注意ください。

' ここをトリプルクリックでマクロ全体を選択できます。
Public Sub DeleteLinkedFilesInDeletedItems()
    On Error Resume Next
    Const SAVE_DIR = "C:\ATTACHMENTS\"
    Dim objFSO
    Dim fldDeleted As Outlook.MAPIFolder
    Dim objItem 'As MailItem
    Dim objAttach As Attachment
    '
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    '
    Set fldDeleted = Application.Session.GetDefaultFolder(olFolderDeletedItems)
    For Each objItem In fldDeleted.Items
        For Each objAttach In objItem.Attachments
            If objAttach.Type = olByReference Then
                If objAttach.PathName Like SAVE_DIR & "*" Then
                    objFSO.DeleteFile objAttach.PathName, True
                End If
            End If
        Next
    Next
End Sub

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

広告

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中