删除对会议邀请的回复

Delete response to meeting invite

我有以下代码可以从收件箱中永久删除邮件。

但是,当回复会议邀请时,表示此人已接受会议,请勿删除。

当我点击那个邮件时 运行 这个代码不会被删除?

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

在代码中,您的函数仅接受 MailItem class 的实例。但是 Outlook 文件夹可能包含不同类型的项目 - 约会、文档、便笺等。要在运行时区分它们,您可以使用以下结构:

Dim obj As Object

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

因此,您需要按以下方式声明函数(如果您不需要对不同种类的项目执行单独的操作):

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.

您不能通过按钮 运行 这样的代码。

您可以 运行 Sub delItemPermanently() 按按钮或 F8 单步执行。

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