2017-09-21 238 views
0

我正在嘗試創建一個宏,用於將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

回答

0

我會繼續和張貼的答案我自己的問題,這樣,如果其他人在未來有這個問題,他們可以看到我初來乍到的代碼工作:

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 
相關問題