2015-04-10 3 views
0

У меня есть модуль в класс, как это следующим образом:Перспективы VBA Item_add не работает

Public WithEvents nItems As Outlook.Items 

Private Sub nItems_ItemAdd(ByVal Item As Object) 
    MsgBox Item.Subject 
End Sub 

И я знаю, что где-нибудь значение должно быть установлено для nItems, таких как:

Set nItems = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Items 

Но проблема в том, что nItems теряет свое значение после завершения процедуры. И, таким образом, событие не вызывается Outlook, когда я получаю новое сообщение.

Любая помощь приветствуется.

ответ

1

Вы должны объявить nItems.

Public WithEvents myOlItems As Outlook.Items 

Public Sub Initialize_handler() 
    Set myOlItems = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts).Items 
End Sub 

Private Sub myOlItems_ItemAdd(ByVal Item As Object) 
    Dim myOlMItem As Outlook.MailItem 
    Dim myOlAtts As Outlook.Attachments 
    Set myOlMItem = myOlApp.CreateItem(olMailItem) 
    myOlMItem.Save 
    Set myOlAtts = myOlMItem.Attachments 
    ' Add new contact to attachments in mail message 
    myOlAtts.Add Item, olByValue 
    myOlMItem.To = "Sales Team" 
    myOlMItem.Subject = "New contact" 
    myOlMItem.Send 
End Sub 

Обратите внимание, то ItemAdd событие не срабатывает, когда большое количество элементов, которые добавляются в папку одновременно (более 16).

Также вы можете найти полезную статью Getting Started with VBA in Outlook 2010.

Смежные вопросы