outlook vba - 将电子邮件移至文件夹,需要对象

时间:2015-09-16 12:02:02

标签: vba outlook

我正在尝试编写一些vba,它会将收到的电子邮件移动到某个文件夹中。

到目前为止,代码是:

Private WithEvents myItems as Outlook.Items
Public Sub Application_Startup()
    Dim myApp as Outlook.Application
    Dim myNameSpace as Outlook.NameSpace
    Dim myInbox as Outlook.Folder

    Set myApp = Outlook.Application
    Set myNameSpace = myApp.GetNamespace("MAPI")
    Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox)
    Set myItems = myInbox.Items
End Sub

Private Sub myItems_ItemAdd(ByVal item as Object)
    Dim msg as Outlook.MailItem
    Dim recips as String
    Dim destFolder as Outlook.Folder

    Set destFolder = myInbox.Folders("Test")
    Set msg = item
    recips = msg.To
    If InStr(recips, "m0atz") Then
          msg.Move destFolder
    End If

    Set msg = nothing
    Set destFolder = nothing
End Sub

从这一行收到电子邮件时,我遇到的问题是错误:

Set destFolder = myInbox.Folders("Test")

说“运行时错误424 - 需要对象”

任何想法都非常感激。

1 个答案:

答案 0 :(得分:1)

myInboxApplication_Startup的局部变量。因此,它只能在Application_Startup中访问。

强烈建议将Option Explicit On添加到模块的顶部。这会提醒您这些错误(以及其他错误)。

要解决您的问题,

  • myInbox方法中再次发现myItems_ItemAdd(您可能希望将Application_Startup代码提取到方法中)或

  • 在您的方法之外声明myInbox(就像myItems),以使其可全局访问。请注意,只有在必要时才应谨慎使用此类“全局变量”。