如何在Outlook中收到新邮件后触发宏运行?我正在编写一个宏,它根据从Nagios服务器收到的警报作为电子邮件在数据库上创建票证。但是,我不能让宏在检查邮件时在无限循环中运行,因为它太资源太重而使我的桌面挂起。我需要找到一种方法只在收到新邮件时触发宏。我在MSDN网站上查找了NewMail事件的内容,但我找不到任何连贯的内容。任何人都可以向我展示一些示例代码,以显示如何从新邮件事件中触发宏吗?
2 回答
梵蒂冈之花
TA贡献1900条经验 获得超5个赞
此代码将向默认的本地收件箱添加事件侦听器,然后对传入的电子邮件执行某些操作。您需要在下面的代码中添加该操作。
Private WithEvents Items As Outlook.Items Private Sub Application_Startup() Dim olApp As Outlook.Application Dim objNS As Outlook.NameSpace Set olApp = Outlook.Application Set objNS = olApp.GetNamespace("MAPI") ' default local Inbox Set Items = objNS.GetDefaultFolder(olFolderInbox).Items End SubPrivate Sub Items_ItemAdd(ByVal item As Object) On Error Goto ErrorHandler Dim Msg As Outlook.MailItem If TypeName(item) = "MailItem" Then Set Msg = item ' ****************** ' do something here ' ****************** End IfProgramExit: Exit SubErrorHandler: MsgBox Err.Number & " - " & Err.Description Resume ProgramExit End Sub
粘贴ThisOutlookSession
模块中的代码后,必须重新启动Outlook。
繁星coding
TA贡献1797条经验 获得超4个赞
尝试这样的内容ThisOutlookSession
:
Private Sub Application_NewMail() Call Your_main_macroEnd Sub
当我收到一封电子邮件并打开该应用程序事件时,我的outlook vba就被解雇了。
编辑:我刚刚测试了一个hello world msg框,它在application_newmail
收到电子邮件后在活动中被调用后运行。
添加回答
举报
0/150
提交
取消