希望有人可以提供帮助。
我在Outlook中有几个VBA模块,所有这些模块都以“ A006”为前缀,然后是3位数字,它们的值是递增的。
示例:A006001; A006002 ..... A006069等
我试图根据传入电子邮件的主题来调用这些模块。
请参见示例代码1 ,它能够正确识别电子邮件代码,并在项目的ThisOutlookSession中运行。
我面临的问题是当我尝试调用相关模块时。我已经尝试了几种无法使用的代码版本。请参见代码2 中的这些示例。
是否有一种方法可以基于另一段代码中的变量来调用特定的模块名称?
代码1:
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
' ******************
Dim rdate As String
rdate = Int(Msg.ReceivedTime)
If rdate <> Date Then
GoTo ProgramExit
End If
If InStr(Msg.SUBJECT, "A006") > 0 Then
MsgBox Left(Msg.SUBJECT, 7)
End If
' ******************
End If
ProgramExit:
Exit Sub
ErrorHandler:
MsgBox Err.Number & " - " & Err.Description
Resume ProgramExit
End Sub
代码2:
Call Left(Msg.SUBJECT, 7)
Application.Run (Left(Msg.SUBJECT, 7))
Session.DefaultStore.GetRules.item(Left(Msg.SUBJECT, 7)).Execute