如何将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") 

如何解决的目标路径,使其指向正确的子文件夹?

+0

上的错误恢复接下来的一开始是所有编程中最糟糕的错误。 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

+0

我应该开头我的评论:”我不知道我在做什么,我完全新来这个,我在摸索所以我很乐意接受任何人愿意给予的帮助和指导。“我会阅读错误处理,谢谢你的建议! – sparkforce

+0

我也在研究你给我的代码建议。当我输入第一个我得到那个说我需要调试“如果moveToFolder.DefaultItemType = olMailItem然后” – sparkforce

我会继续和张贴的答案我自己的问题,这样,如果其他人在未来有这个问题,他们可以看到我初来乍到的代码工作:

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