outlook vba-将电子邮件移动到文件夹,需要对象
我正在尝试写一些vba,它可以在收到电子邮件时将其移动到某个文件夹中 到目前为止,守则是:outlook vba-将电子邮件移动到文件夹,需要对象,vba,outlook,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
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-需要对象”
非常感谢任何想法。
myInbox
是应用程序启动的局部变量。因此,它只能在应用程序启动时访问
我强烈建议在模块顶部添加选项Explicit On
。这将提醒您此类错误(以及其他错误)
来解决你的问题
- 在
myItems\u ItemAdd
方法中再次发现myInbox
(您可能希望将应用程序启动代码提取到该方法中)或
- 在方法之外声明
myInbox
(就像myItems
)以使其全局可访问。请注意,这种“全局变量”应该谨慎使用,并且只有在真正必要时才使用
很有魅力!谢谢Heinzi,注意到选项明确,非常感谢。