2012-09-07 42 views
2

我使用Outlook(MS Exchange)並擁有個人以及兩個組收件箱()我正在使用個人檔案登錄,通過該檔案我也可以訪問組收件箱 )。創建VBA宏以保存電子郵件副本

當我發送一封電子郵件,我選擇我的任何個人或From領域的兩組電子郵件地址之一。當發送的電子郵件,我想這取決於我用這From電子郵件地址保存在myIndividualMailboxgroupAMailbox,或groupBMailbox收件箱副本。

例子:如果我發送一封電子郵件From[email protected],我想保存的收件箱中的電子郵件的副本groupAMailbox而不是我個人的收件箱)。

我明白,這是不可能通過在Outlook中設置規則,但可以使用VBA宏來完成。我現在不寫如何編寫VBA宏,也不知道這是一個簡短的腳本還是更復雜的腳本。事實上,我從來沒有在Outlook中寫過宏,因此我甚至不知道如何開始。任何人都可以展示如何做到這一點?

我開始尋找這個問題的解決方案:Outlook send-rule that filter on the 'From' field

回答

1

我做了這個給你,據我所知,它的工作原理。您應該將其放入Microsoft Outlook對象 - ThisOutlookSession模塊中。

請注意,myolApp_ItemSend事件將永遠不會觸發,除非您先運行enableEvents。並且您需要確保每次關閉重新打開的Outlook時啓用它。這將需要一些定製,但它應該給你的一般想法。

Option Explicit 
Public WithEvents myolApp As Outlook.Application 

Sub enableEvents() 
    Set myolApp = Outlook.Application 
End Sub 

Private Sub myolApp_ItemSend(ByVal item As Object, Cancel As Boolean) 
    Dim items As MailItem 
    Dim copyFolder As Outlook.Folder 
    Dim sentWith As String 
    'Identify sender address 
    If item.Sender Is Nothing Then 
     sentWith = item.SendUsingAccount.SmtpAddress 
    Else 
     sentWith = item.Sender.Address 
    End If 

    'Determin copy folder based on sendAddress 
    Select Case sentWith 
     Case "[email protected]" 
      'get groupAMailbox's inbox 
      Set copyFolder = Application.GetNamespace("MAPI").folders("groupAMailbox").folders("Inbox") 
     Case "myE-mailAddress" 
      'get My inbox 
      Set copyFolder = Application.GetNamespace("MAPI").folders("myE-mailAddress").folders("Inbox") 
    End Select 

    'copy the Item 
    Dim copy As Object 
    Set copy = item.copy 
    'move copy to folder 
    copy.Move copyFolder 

End Sub 

編輯:看起來他們實際上已經建立的情況下功能集成到Outlook的申請對象直接了,但它考驗你還要做什麼,我上面列出。

相關問題