Как перенести электронную почту в Outlook в подпапку?


0

Я пытаюсь создать макрос, который будет перемещать элементы в папке «Входящие» 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

On Error Resume В начале - самая худшая ошибка во всех программах. http://www.cpearson.com/Excel/ErrorHandling.htm Переместить его непосредственно перед установкой moveToFolder add On Error GoTo 0. Предполагая, что папка «События» находится непосредственно под почтовым ящиком. Переместите дерево папок вверху по умолчанию в папку «Родитель», а затем в папку «События». 'Set moveToFolder = ns.GetDefaultFolder (olFolderInbox) .Parent.Folders (« События »). Папки (« Запросы на события »)' или идут прямо туда с помощью 'Set MoveToFolder = ns.Folders (« Имя почтового ящика, а не буквально Mailbox - мой имя "). Папки (« События »). Папки (« Запросы на события »)' 23 сен. 172017-09-23 16:06:13

  0

Я должен был предварять мой комментарий: «Я понятия не имею, что я делаю, я совершенно новичок в этом, и я нащупываю темный, поэтому я с радостью возьму любую помощь и наставления, которые кто-то готов дать ». Я прочитаю об обработке ошибок, спасибо за совет! 26 сен. 172017-09-26 14:39:21

  0

Я также работаю над выяснением предложений кода, которые вы мне дали. Когда я ввожу первый, я получаю сообщение об ошибке, которое говорит, что мне нужно отлаживать «Если moveToFolder.DefaultItemType = olMailItem Then» 26 сен. 172017-09-26 14:45:28

  0

Никто не отправил официальный ответ на вопрос о целевой папке, который был бы недействителен обновлением. Я считаю, что вы можете обновить вопрос с помощью текущего кода и переориентировать заголовок и тело на конкретный вопрос об ошибке. 26 сен. 172017-09-26 19:57:22

  0

Мне не удалось вернуться и работать над этим до сегодняшнего дня, и когда я запускал новый код, все работало нормально. Я ничего не менял, но я больше не получаю ошибку. Я использовал первое предложение 'Set moveToFolder = ns.GetDefaultFolder (olFolderInbox) .Parent.Folders (« События »). Папки (« Запросы на события »)' и это работает отлично. 05 окт. 172017-10-05 16:47:37

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