簡體   English   中英

VBA 到 Perm 刪除 Outlook 郵件

[英]VBA to Perm Delete Outlook mail

我有以下代碼,可以很好地從收件箱中永久刪除郵件。 但是,當人們回復會議邀請時,我們會說該人已接受會議的那些郵件不會刪除。

當我單擊該郵件並運行此代碼時,它不會刪除嗎?

這是我正在使用的

Sub PermDelete(Item As Outlook.MailItem)
' First set a property to find it again later
Item.UserProperties.Add "Deleted", olText
Item.Save
Item.Delete

'Now go through the deleted folder, search for the property and delete item
Dim objDeletedFolder As Outlook.Folder
Dim objItem As Object
Dim objProperty As Variant

Set objDeletedFolder = Application.GetNamespace("MAPI"). _
  GetDefaultFolder(olFolderDeletedItems)
For Each objItem In objDeletedFolder.items
    Set objProperty = objItem.UserProperties.Find("Deleted")
    If TypeName(objProperty) <> "Nothing" Then
        objItem.Delete
    End If
Next

End Sub

在代碼中,您的 function 僅接受MailItem class 的實例。 但是 Outlook 文件夾可能包含不同類型的項目 - 約會、文檔、筆記等。為了在運行時區分它們,您可以使用以下構造:

Dim obj As Object

If TypeName(obj) = "MailItem" Then
  ' your code for mail items here
End If

因此,您需要通過以下方式聲明 function(如果您不需要對不同類型的項目執行單獨的操作):

Sub PermDelete(Item As Object)
' First set a property to find it again later
Item.UserProperties.Add "Deleted", olText
Item.Save
Item.Delete

'Now go through the deleted folder, search for the property and delete item
Dim objDeletedFolder As Outlook.Folder
Dim objItem As Object
Dim objProperty As Variant

Set objDeletedFolder = Application.GetNamespace("MAPI"). _
  GetDefaultFolder(olFolderDeletedItems)
For Each objItem In objDeletedFolder.items
    Set objProperty = objItem.UserProperties.Find("Deleted")
    If TypeName(objProperty) <> "Nothing" Then
        objItem.Delete
    End If
Next

End Sub

Item設置為通用Object

所選項目的示例

Option Explicit
Public Sub Example()
    Dim obj As Object
    
    Set obj = ActiveExplorer.Selection.Item(1)
    obj.Delete

End Sub

要運行具有類似(Item As Outlook.MailItem)的參數的代碼,您需要在這種情況下傳遞 Item 的信息。

您不能從按鈕運行此類代碼。

您可以從按鈕或 F8 運行Sub delItemPermanently()以逐步執行。

Option Explicit

Sub delItemPermanently()
    ' Select a single item
    ' This line passes the item to PermDelete
    PermDelete ActiveExplorer.Selection(1)
End Sub


Sub PermDelete(Item As Object)

    ' Notice Object not Mailitem
    ' This will accommodate mailitems as well
    
    ...

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM