【发布时间】:2021-11-11 17:51:26
【问题描述】:
我正在尝试创建一个宏,它将我的 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")
如何修复目标路径以使其指向正确的子文件夹?
【问题讨论】:
-
On Error Resume Next 在开始时是所有编程中最严重的错误。 cpearson.com/Excel/ErrorHandling.htm 将其移至 Set moveToFolder 添加 On Error GoTo 0 之前。假设“Events”文件夹直接位于邮箱下方。将文件夹树从默认收件箱向上导航到 Parent,然后向下导航到 Events 文件夹。
Set moveToFolder = ns.GetDefaultFolder(olFolderInbox).Parent.Folders("Events").Folders("Event Requests")或直接使用Set MoveToFolder = ns.Folders("The mailbox name not literally Mailbox - my name").Folders("Events").Folders("Event Requests")去那里 -
我应该在我的评论前加上“我不知道我在做什么,我对此完全陌生,我在黑暗中摸索,所以我很乐意接受任何人的帮助和指导愿意付出。”我会阅读有关错误处理的内容,谢谢您的建议!
-
我也在努力找出你给我的代码建议。当我输入第一个时,我得到一个错误,说我需要调试“If moveToFolder.DefaultItemType = olMailItem Then”
-
没有人发布目标文件夹问题的官方答案,更新将使其无效。我相信您可以使用当前代码更新问题,并将标题和正文重新聚焦到有关错误的特定问题。
-
直到今天我才能回去处理这个问题,当我运行新代码时,一切正常。我没有改变任何东西,但我不再收到错误。我使用了
Set moveToFolder = ns.GetDefaultFolder(olFolderInbox).Parent.Folders("Events").Folders("Event Requests")的第一个建议,效果很好。