【问题标题】:VBA Outlook event moving emailVBA Outlook 事件移动电子邮件
【发布时间】:2011-12-22 00:42:57
【问题描述】:

我正在寻找一种方法来获取 Outlook 中移动项目/电子邮件的事件。

我们可以使用 Inspector 吗? 或者可能有一个事件处理程序,如 itement 或 newmail?

谢谢


更多详情:

我有 4 个或更多邮箱。 每个都有 X 个文件夹和子文件夹(其中 1 个是具有数百万个文件夹的 livelink 框)。 有的是普通邮箱,也有拖普通邮件的人。

我想在每次邮件移动到 livelink 框中的文件夹时捕捉。

【问题讨论】:

    标签: vba outlook event-handling


    【解决方案1】:

    将项目添加到文件夹中的集合时会触发事件。例如,假设您在默认收件箱下方有一个名为“Stuff”的文件夹。每次将电子邮件移至该文件夹时都会触发此代码:

    Private WithEvents Items As Outlook.Items
    
    Private Sub Application_Startup()
      Dim olApp As Outlook.Application
    
      Set olApp = Outlook.Application
      Set Items = GetNS(olApp).GetDefaultFolder(olFolderInbox).Folders("Stuff").Items
    End Sub
    
    Private Sub Items_ItemAdd(ByVal item As Object)
    
      On Error GoTo ErrorHandler
    
      MsgBox "You moved an item into the 'Stuff' folder."
    
    ProgramExit:
      Exit Sub
    ErrorHandler:
      MsgBox Err.Number & " - " & Err.Description
      Resume ProgramExit
    End Sub
    
    Function GetNS(ByRef app As Outlook.Application) As Outlook.NameSpace
      Set GetNS = app.GetNamespace("MAPI")
    End Function
    

    将其粘贴到 ThisOutlookSession 中并重新启动 Outlook。每当将电子邮件移至该文件夹时,您都会看到弹出窗口。

    【讨论】:

    • 是的,好吧,你使用物品,但我有 4 个邮箱(有些是公用邮箱),还有一个包含数百万文件夹的邮箱(如果你知道的话,是 livelink 邮箱)。问题似乎是项目列表,或者我可以在选择文件夹时设置列表,我认为我的第一个问题不够准确
    • 没有真正的“项目移动”事件(我很乐意听到其他情况),您必须通过检查 ItemAdd 事件来返回它。如果它触发,则将一个项目添加到引用文件夹的项目集合中。我们只是假设(因为它不是收件箱)该项目已被移动。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多