我在模块中有此代码:
Private WithEvents objNewMailItems As Outlook.Items
Public Sub Application_Startup()
Dim olApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
Set mainInboxItems = objNS.GetDefaultFolder(olFolderInbox).Items
End Sub
Private Sub mainInboxItems_ItemAdd(ByVal item As Object)
Call MandarMail.sendOutlookEmail
' //this send another email...
End Sub
这是我第一次使用触发器。 Visual Basic for Applications无法识别此:
Private WithEvents objNewMailItems As Outlook.Items
我正在使用Outlook 2013
如果使用Outlook编写,则应该可以。您已声明objNewMailItems
,但使用了mainInboxItems
Dim WithEvents objNewMailItems As Items
Public Sub Application_Startup()
Dim objNS As NameSpace
Set objNS = olApp.GetNamespace("MAPI")
Set objNewMailItems = objNS.GetDefaultFolder(olFolderInbox).Items
End Sub
Private Sub objNewMailItems_ItemAdd(ByVal item As Object)
'This will fire when you receive a new email.
Debug.Assert False
End Sub
编辑-我发现,一段时间后Outlook会禁用宏,因此必须每天手动运行StartUp
。不管我尝试使用“信任中心”设置如何-都会不断禁用我的代码。
Thx Darren。我修改了您的代码,现在可以正常工作:
将WithEvents objNewMailItems作为项目昏暗
Public Sub Application_Startup()
Dim objNS As Outlook.NameSpace
Dim olApp As Outlook.Application
Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
Set objNewMailItems = objNS.GetDefaultFolder(olFolderInbox).Items
End Sub
Private Sub objNewMailItems_ItemAdd(ByVal item As Object)
'This will fire when you receive a new email.
MsgBox ("mail recibi")
End Sub