Outlook宏,发送两个回复而不是一个

时间:2014-01-27 07:43:30

标签: vba outlook

我为Outlook创建了这个宏,以便在成功发送回复后删除电子邮件。

测试显示我发送了两个回复而不是一个回复。

Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

    Dim oExplorer As Outlook.Explorer
    Dim oMail As Outlook.MailItem
    Dim oOldMail As Outlook.MailItem
    Set oExplorer = Application.ActiveExplorer
    If oExplorer.Selection.Item(1).Class = olMail Then
        Set oOldMail = oExplorer.Selection.Item(1)
        Set oMail = oOldMail.Reply
        oMail.Recipients.Item(1).Resolve
        If oMail.Recipients.Item(1).Resolved Then
            'delete reply email from sent items
            oMail.DeleteAfterSubmit = True
            oMail.Send
              'delete original email from inbox
            oOldMail.Delete
        Else
            MsgBox "Could not resolve " & oMail.Recipients.Item(1).Name
        End If
    Else
        MsgBox "Not a mail item"
        End If

End Sub

1 个答案:

答案 0 :(得分:0)

当要发送一个Item时,将调用Sub Application_ItemSend(ByVal Item As Object,Cancel As Boolean)。

正在发送的物品是" ByVal物品作为对象"中的物品。

使用Set oMail = oOldMail.Reply

创建第二封邮件

即使你现在删除Set oMail = oOldMail.Reply和oMail.Send,代码还有其他问题。

  1. 在撰写回复时,您可以执行其他操作并更改选择。设置oOldMail = oExplorer.Selection.Item(1)将无法获取原始邮件。

  2. 对于新邮件,您撰写的没有原始邮件。您最后的选择将是oOldMail并将被删除。

  3. 您需要更复杂的代码来处理这两种情况。