根据变量在Outlook中调用模块

时间:2019-03-04 14:30:00

标签: vba outlook outlook-vba

希望有人可以提供帮助。

我在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

0 个答案:

没有答案