我正在尝试编写一些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 - 需要对象”
任何想法都非常感激。
答案 0 :(得分:1)
myInbox
是Application_Startup
的局部变量。因此,它只能在Application_Startup
中访问。
我强烈建议将Option Explicit On
添加到模块的顶部。这会提醒您这些错误(以及其他错误)。
要解决您的问题,
在myInbox
方法中再次发现myItems_ItemAdd
(您可能希望将Application_Startup代码提取到方法中)或
在您的方法之外声明myInbox
(就像myItems
),以使其可全局访问。请注意,只有在必要时才应谨慎使用此类“全局变量”。