2011-05-21 184 views
0

我试图运行一个函数,每次新邮件到达Outlook。我一直在做一些搜索,但每次收到电子邮件时我都找不到我的代码。是否有可以使用的新邮件活动?VBA outlook新邮件

我添加了一个简单的MsgBox它能够看到事件是否正在触发,但它似乎没有工作。我将这段代码放在ThisOutlookSession模块中。任何adivice?这是我的代码。

Public WithEvents myOlApp As Outlook.Application 

    Sub Initialize_handler() 
     Set myOlApp = CreateObject("Outlook.Application") 
    End Sub 

    Private Sub myOlApp_NewMail() 
     Dim myExplorers As Outlook.Explorers 
     Dim myFolder As Outlook.MAPIFolder 
     Dim x As Integer 
     Set myExplorers = myOlApp.Explorers 
     Set myFolder = myOlApp.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox) 
     If myExplorers.Count <> 0 Then 
      For x = 1 To myExplorers.Count 
       On Error GoTo skipif 
       If myExplorers.Item(x).CurrentFolder.Name = "Inbox" Then 
        MsgBox ("Test") 
        myExplorers.Item(x).Display 
        myExplorers.Item(x).Activate 
        Exit Sub 
       End If 
    skipif: 
      Next x 
     End If 
     On Error GoTo 0 
     myFolder.Display 
    End Sub 
+0

当有人已经提供了解决您的问题的答案,将其标记通过单击旁边的答案的小V作为接受。通过这种方式,您向任何读者表明这是解决方案,并且您的问题已得到解决。 – 2011-05-24 17:09:40

回答

1

尝试把:

 
Private Sub Application_NewMail() 
    MsgBox "New mail" 
End Sub 

在“ThisOutlookSession”

+0

谢谢马特。这工作在我的工作电脑上,但遗憾的是不在我的家用电脑上...我正在努力开发的电脑。我的观点显然存在根深蒂固的问题。这将需要更多的挖掘。 – loveforvdubs 2011-05-23 23:14:09

+0

这很尴尬。这整个过程中,我都在Outlook中禁用了宏。我期待着实际推进这个项目。感谢所有人的帮助! – loveforvdubs 2011-05-24 00:20:15

+0

@loveforvdubs如果Matt的回答帮助你解决它,你应该选择它作为答案。 – jonsca 2011-05-24 12:14:10

0

有上MSDN一个很好的例子展示了如何当一个新邮件到达时(使用Outlook.Explorers)显示收件箱。你可以很容易地适应你自己的程序。

+0

@loveforvdubs你应该编辑你的问题,以表明你已经尝试了什么,你期望得到什么结果,以及你得到了什么结果。 – jonsca 2011-05-21 22:23:07

+0

对不起,我并不想故意提交该评论,请参阅下文 – loveforvdubs 2011-05-21 22:24:59

+0

有没有办法在评论中发布代码?我一直在尝试回复我尝试使用的代码,但我一直无法找到在注释字段中发布代码的方法。 – loveforvdubs 2011-05-21 23:19:42

相关问题