Вы можете вставить это в ThisOutlookSession
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim oNewMailItem As Outlook.MailItem
Dim appNameSpace As Outlook.NameSpace
Set appNameSpace = Application.Session
Select Case appNameSpace.GetItemFromID(EntryIDCollection).Class
Case Is = olMail
Set oNewMailItem = appNameSpace.GetItemFromID(EntryIDCollection)
End Select
End Sub
Событие возвращает идентификатор объекта, идентификатор объекта используется для получения объекта. Если объект является электронным письмом, он сохраняется как локальная переменная.
В качестве альтернативы, вы можете не захотеть «замутить» ThisOutlookSession
, чтобы вы могли использовать настраиваемый класс и выставлять почту как свойство publi c.
В ThisOutlookSession
вы бы имели :
Public cNewMailEx As clsNewMailEx
Private Sub Application.Startup()
Set cNewMailEx = New clsNewMailEx
End sub
В модуле класса с именем clsNewMailEx
у вас будет:
Option Explicit
Private WithEvents olApp As Outlook.Application
Private pMailItem As Outlook.MailItem
Public Property Get NewMailItem() As Outlook.MailItem
Set NewMailItem = pMailItem
End Property
Private Sub Class_Initialize()
Set olApp = Outlook.Application
End Sub
Private Sub olApp_NewMailEx(ByVal EntryIDCollection As String)
Dim appNameSpace As Outlook.NameSpace
Set appNameSpace = Application.Session
Select Case appNameSpace.GetItemFromID(EntryIDCollection).Class
Case Is = olMail
Set pMailItem = appNameSpace.GetItemFromID(EntryIDCollection)
End Select
End Sub
Теперь в любом месте вашего приложения вы можете получить новое электронное письмо с помощью cNewMailEx.NewMailItem