Vba Outlook宏,发送两个回复,而不是一个回复
我为Outlook创建了此宏,以便在成功发送回复后删除电子邮件 测试表明我发送了两个回复,而不是一个Vba Outlook宏,发送两个回复,而不是一个回复,vba,outlook,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 = App
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
子应用程序_ItemSendByVal Item As Object,Cancel As Boolean将在即将发送项时调用 正在发送的项是ByVal Item中作为对象的项 您创建了第二封邮件,邮件集为oMail=oOldMail.Reply 即使您现在删除了Set oMail=oOldMail.Reply和oMail.Send,代码也存在其他问题 在撰写回复时,您可以执行其他操作并更改选择。Set oOldMail=oExplorer.Selection.Item1将无法获取原始邮件 对于您撰写的新邮件,没有原始邮件。您最后所做的选择将是oOldMail,并将被删除
您需要更复杂的代码来处理这两种情况。我不确定上面的脚本做什么-发送消息时,您抓取所选消息并回复它。调用Send将再次触发ItemSend。我很惊讶你没有进入一个无限循环。