如何应用“ WithEvents”触发器?

问题描述 投票:0回答:2

我在模块中有此代码:

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

vba outlook outlook-vba
2个回答
2
投票

如果使用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。不管我尝试使用“信任中心”设置如何-都会不断禁用我的代码。


0
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.