如何将Outlook中的电子邮件移至子文件夹?
问题描述:
我正在尝试创建一个宏,用于将Outlook收件箱中的项目移动到与收件箱位于同一级别的另一个文件夹(即,父文件夹不是收件箱的子文件夹)的子文件夹。这是我使用的代码:如何将Outlook中的电子邮件移至子文件夹?
Sub EventRequests()
On Error Resume Next
Dim ns As Outlook.NameSpace
Dim moveToFolder As Outlook.MAPIFolder
Dim objItem As Outlook.MailItem
Set ns = Application.GetNamespace("MAPI")
'Define path to the target folder
Set moveToFolder = ns.Folders("Events").Folders("Event Requests")
If Application.ActiveExplorer.Selection.Count = 0 Then
MsgBox ("Select an E-mail first")
Exit Sub
End If
If moveToFolder Is Nothing Then
MsgBox "Target folder not found!", vbOKOnly + vbExclamation, "Move Macro Error"
End If
For Each objItem In Application.ActiveExplorer.Selection
If moveToFolder.DefaultItemType = olMailItem Then
If objItem.Class = olMail Then
objItem.Move moveToFolder
End If
End If
Next
Set objItem = Nothing
Set moveToFolder = Nothing
Set ns = Nothing
End Sub
当我运行代码我得到一个错误,指出“未找到目标文件夹”!我试过 Set moveToFolder = ns.GetDefaultFolder(olFolderInbox).Folders("Events").Folders("Event Requests")
和Set MoveToFolder = ns.Folders("Mailbox - my name").Folders(targetFolder)
,但都没有工作。我有一个在我的收件箱邮件移动到我的收件箱中的子文件夹的文件夹不同的宏设置和它工作得很好:
Set moveToFolder = ns.GetDefaultFolder(olFolderInbox).Folders("Completed")
如何解决的目标路径,使其指向正确的子文件夹?
答
我会继续和张贴的答案我自己的问题,这样,如果其他人在未来有这个问题,他们可以看到我初来乍到的代码工作:
Sub EventRequests()
Dim ns As Outlook.NameSpace
Dim moveToFolder As Outlook.MAPIFolder
Dim objItem As Outlook.MailItem
Set ns = Application.GetNamespace("MAPI")
On Error GoTo 0
Set moveToFolder = ns.GetDefaultFolder(olFolderInbox).Parent.Folders("Events").Folders("Event Requests")
If Application.ActiveExplorer.Selection.Count = 0 Then
MsgBox ("Select an E-mail first")
Exit Sub
End If
If moveToFolder Is Nothing Then
MsgBox "Target folder not found!", vbOKOnly + vbExclamation, "Move Macro Error"
End If
For Each objItem In Application.ActiveExplorer.Selection
If moveToFolder.DefaultItemType = olMailItem Then
If objItem.Class = olMail Then
objItem.Move moveToFolder
End If
End If
Next
Set objItem = Nothing
Set moveToFolder = Nothing
Set ns = Nothing
End Sub
上的错误恢复接下来的一开始是所有编程中最糟糕的错误。 http://www.cpearson.com/Excel/ErrorHandling.htm将其移动到刚设置moveToFolder添加On Error GoTo 0.假设“Events”文件夹直接位于邮箱下方。将文件夹树从默认收件箱导航到Parent,然后到达Events文件夹。 'Set moveToFolder = ns.GetDefaultFolder(olFolderInbox).Parent.Folders(“Events”)。Folders(“Event Requests”)'或者直接在那里用Set SetToToFolder = ns.Folders(“邮箱名字不是字面上的邮箱 - 我的命名“)。文件夹(”事件“)。文件夹(”事件请求“)' – niton
我应该开头我的评论:”我不知道我在做什么,我完全新来这个,我在摸索所以我很乐意接受任何人愿意给予的帮助和指导。“我会阅读错误处理,谢谢你的建议! – sparkforce
我也在研究你给我的代码建议。当我输入第一个我得到那个说我需要调试“如果moveToFolder.DefaultItemType = olMailItem然后” – sparkforce