2014-06-20 61 views
0

我設法找到一個很好的小腳本,將電子郵件轉發到外部地址,因爲我們的交換服務器配置爲不這樣做。使用Outlook VBA轉發電子郵件,但要排除約會

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String) 
    Dim varEntryIDs 
    Dim objItem 
    Dim i As Integer 
    varEntryIDs = Split(EntryIDCollection, ",") 
    For i = 0 To UBound(varEntryIDs) 
     Set objItem = Application.Session.GetItemFromID(varEntryIDs(i)) 
     Set myItem = objItem.Forward 
     myItem.Recipients.Add "[email protected]" 
     myItem.Send 
    Next 
End Sub 

完美的作品。但現在...我只想做這個,如果他們是消息,而不是約會更新或請求。我不知道在哪裏可以找到它,甚至不知道要找什麼。我的VBA技能來自很久以前。

如果你看看screenshot,我想我有正確的方式MsgBox函數,但你可以驗證?

感謝,

邁克

回答

0

只是條件邏輯的一點點,以確保你只用MailItem處理(因爲objItem是變種/對象可以是其他AppointmentItem項目類型等):

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String) 

    MsgBox "I'm working!", vbExclamation 

    Dim varEntryIDs 
    Dim objItem As Object 
    Dim myItem As MailItem 
    Dim i As Integer 
    varEntryIDs = Split(EntryIDCollection, ",") 
    For i = 0 To UBound(varEntryIDs) 
     Set objItem = Application.Session.GetItemFromID(varEntryIDs(i)) 

     '## Check the item's TypeName and ONLY process if it's a MailItem: 

     If TypeName(objItem) = "MailItem" Then 

      Set myItem = objItem.Forward 
      myItem.Recipients.Add "[email protected]" 
      myItem.Send 

     Else: 
      MsgBox "Type of item is: " & TypeName(objItem) 

     End If 

    Next 
End Sub 
+0

對不起,我知道這是愚蠢的,但現在它什麼都不做。我複製並粘貼到那裏。有什麼方法可以測試並查看它是否在運行? – mdumka

+0

你不知道如何在代碼中放置一個MessageBox提示來測試它是否工作?上面的修改將會A)告訴你它正在工作,並且B)消息框,如果接收到** MailItem以外的任何**類型,以便你可以看到什麼進來... –

+0

@mdumka你能夠讓這個工作? –

1

您可以檢查myItem.MessageClass財產(這將是 「IPM.Note的」 爲常規消息)或myItem.Class財產 - 這將是43(olMail )。

相關問題