Outlook会在从Outlook的资源管理器窗格中删除邮件之前得到警告

问题描述 投票:0回答:1

此第一部分是我找不到答案的问题的答案,而第二部分是该主题的剩余问题。

[基本上,我倾向于不小心删除Outlook邮件,有时甚至没有注意到,因此希望进行确认。删除在单独窗口中打开的电子邮件时,有一个解决方案:https://www.datanumen.com/blogs/get-warned-moving-deleting-items-outlook/(非常感谢那个作者btw)但是此解决方案不涵盖从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
1个回答
0
投票

所以您的问题是如何避免出现多个提示?从我的头顶上:1.在第一个提示上,检查所选项目的数量(Application.ActiveExplorer.Selection.Count),将其存储在一个单独的变量中,并通过在每次事件处理程序触发时递减计数器并仅在其达到0时提示,来跳过以后的很多提示。2.检查显示提示的时间,避免以后再显示提示,例如3秒钟。

© www.soinside.com 2019 - 2024. All rights reserved.