【发布时间】:2020-09-25 18:47:09
【问题描述】:
这篇文章的第一部分是对我找不到答案的问题的回答,而第二部分是关于该主题的剩余问题。
基本上我倾向于不小心删除 Outlook 邮件,有时甚至没有注意到,因此想要确认。 删除在单独窗口中打开的电子邮件时,有一个解决方案: https://www.datanumen.com/blogs/get-warned-moving-deleting-items-outlook/(非常感谢那个作者) 但此解决方案不涵盖从 Outlook 的资源管理器窗格中删除电子邮件的情况。 这篇文章给出了提示,但没有给出答案 https://www.datanumen.com/blogs/get-warned-moving-non-empty-folder-outlook/
所以解决方案是(大部分代码取自上面引用的帖子):
Private WithEvents objExplorer As Outlook.Explorer
Private WithEvents objCurrentFolder As Outlook.Folder
Private Sub Application_Startup()
Set objExplorer = Outlook.Application.ActiveExplorer
End Sub
Private Sub objExplorer_Activate()
'Get the currently selected folder
Set objCurrentFolder = objExplorer.CurrentFolder
End Sub
Private Sub objCurrentFolder_BeforeItemMove(ByVal Item As Object, ByVal MoveTo As MAPIFolder, Cancel As Boolean)
Dim xPrompt As String
Dim xYesOrNo As Integer
xPrompt = "Delete?"
xYesOrNo = MsgBox(xPrompt, vbYesNo + vbDefaultButton2, "Confirm Deleting Mail")
If xYesOrNo = vbYes Then
Cancel = False
Else
Cancel = True
End If
End Sub
剩下的问题 上面代码的烦人之处在于,当删除多封电子邮件的选择时,每封电子邮件都会发出确认请求,这在删除 10 多封电子邮件时相当拖累。 到目前为止,我还没有为此想出一个合适的,即健壮编码的解决方案(尝试了选择方法 - 请参阅下面的更新)。 → 有什么想法吗?
2020 年 6 月 8 日更新 - 准解决方案
到目前为止,我已经有了一个我称之为准解决方案的解决方案,涵盖了迄今为止遇到的所有棘手情况,包括撤消、移动电子邮件、在单独的窗口中打开电子邮件然后删除等引起的事件,...... 问题是我现在有一个标志(真/假),如变量和一个计数器,每次触发上述事件之一时都必须更新它们。结果:难以概括意大利面条般的代码????
→ 我可以发布代码以防有人感兴趣,但请注意它不是很好和简短。
【问题讨论】:
标签: vba email outlook confirmation