2011-11-04 242 views
3

我搜索一种方式来获取移动项目/电子邮件在Outlook中的事件。VBA Outlook事件移动电子邮件

我们可以使用Inspector吗? 或者也许有像event或newmail这样的事件处理程序?

谢谢


更多详细信息:

我有4个或更多的邮箱。 每个文件夹和子文件夹都有一个数量为X的文件夹(其中1个是带有数百万个文件夹的活动链接文件夹)。 有些是常见的盒子,有些人拖动普通的邮件。

我想捕获每一次邮件移动到一个文件夹中的链接框。

回答

2

将项目添加到文件夹中的集合时会触发事件。例如,假设您的默认收件箱下面有一个名为“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。每当电子邮件被移动到该文件夹​​时,您将看到弹出窗口。

+0

是啊,嗯,你使用的物品,但我有4个邮箱(有些是共享箱),我有一个数百万个文件夹(如果你知道是活链接框)。问题似乎是项目列表,或者我可以在选择文件夹时设置列表,我想我的第一个问题不够准确 – forX

+0

没有真正的“项目移动”事件(我很想听否则),你必须通过检查ItemAdd事件来回到它。如果它激发,则将项目添加到引用文件夹的项目集合中。我们简单地假设(因为它不是收件箱)该项目被移动。 – JimmyPena

相关问题