【问题标题】:Outlook get warned before deleting messages from Outlook's explorer pane在从 Outlook 的资源管理器窗格中删除邮件之前,Outlook 会收到警告
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 非常感谢!我已经尝试过 Selection.Count 方法,但是当 objCurrentFolder_BeforeItemMove 先前由不同的事件(例如 objMail_BeforeDelete)触发或触发撤消时,这可能会出现严重错误。基本上,存储要跳过的提示数量的变量最终会不同步。
    • 那么就可以使用时间戳了。
    • 虽然不完美,但我现在同意时间戳方法有可能使代码更易于遵循。 → 我会在这个周末尝试一下。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 2021-11-14
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多