Запустить макрос после нового письма с определенной темой - PullRequest
0 голосов
/ 09 мая 2019

Запуск макроса Excel на основе электронной почты Тема

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

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 
    ' ******************
    ' I call my macro here
    ' ******************
  End If
ProgramExit: 
  Exit Sub
ErrorHandler: 
  MsgBox Err.Number & " - " & Err.Description 
  Resume ProgramExit 
End Sub

Я думал, что если я изменю эту часть If TypeName(item) = "MailItem" Then на If TypeName(item) = "MailItem" And Msg.Subject = "specific_subject_here" Then, то теперь она должна запускать макрос только тогда, когда новое письмо содержит конкретнуютема в строке темы, но я получаю эту ошибку: 91-Object variable or with block variable not set.Означает ли это, что мне также нужно объявить Msg как объект и можно ли его объединить с функцией TypeName?

1 Ответ

1 голос
/ 09 мая 2019

Сообщение об ошибке в значительной степени говорит само за себя: вы пытаетесь использовать объект, которого у вас еще нет Set.

Вместо этого добавьте дополнительный If Msg.Subject после you Set msg...:

If TypeName(item) = "MailItem" Then
    Set Msg = item 

    If Msg.Subject = "specific subject" Then
    ' ******************
    ' I call my macro here
    ' ******************
    End If
End If
...