VBA MailItem. Добавить только один раз? - PullRequest
0 голосов
/ 15 октября 2018

Я написал небольшой фрагмент кода для выполнения определенных действий, когда электронное письмо приходит в почтовый ящик, но кажется, что оно работает только для первого электронного письма, которое приходит сразу после сохранения кода, после чего ничего не происходитдля последующих писем.

Я поставил часы на код, и ничего не сработало, так что это не просто последующая ошибка в последующем коде.

Код есть (вобъект сеанса):

Option Explicit
Private objNS As Outlook.Namespace
Private WithEvents objItems As Outlook.Items

Private sub Application_Startup()
Dim objWatchFolder as Outlook.Folder
Set objNS = Application.Getnamespace("MAPI")
Set objWatchFolder = objNS.GetDefaultFolder(olFolderInbox)
Set objItems = objWatchFolder.Items
End Sub

Private Sub objItems_ItemAdd(ByVal Item as Object)
    ' Do this, that, the other, passing the e-mail to other subroutines
    ' No problems in this code.
End Sub

Будем весьма благодарны за любые указания или указатели!

1 Ответ

0 голосов
/ 16 октября 2018

Пожалуйста, перезапустите Outlook, если вы используете WithEvents.Однако попробуйте следующий код:

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 Sub
Private 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 If
ProgramExit: 
  Exit Sub
ErrorHandler: 
  MsgBox Err.Number & " - " & Err.Description 
  Resume ProgramExit 
End Sub

Ссылочная ссылка: Как запустить макрос для запуска после получения нового письма в Outlook?

...