基于电子邮件主题运行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函数组合?
答案 0 :(得分:1)
错误消息几乎是不言自明的:您正在尝试使用尚未Set
的对象。
相反,在您If Msg.Subject
之后,在之后添加一个额外的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