2011-11-04 239 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

相關問題