【发布时间】:2020-07-09 19:18:59
【问题描述】:
我想将电子邮件从共享收件箱移动到同一收件箱中的共享子文件夹。
我有两个邮箱,第二个是共享的。
"Outbound TTA" = 第二个共享邮箱的名称。
"réception" = "Outbound TTA" 中收件箱文件夹的名称
"MyFolderEmails" = "réception" 文件夹中子文件夹的名称。
代码只运行一次!
第二次出现
运行时错误“-2147221233 (8004010f)”:尝试的操作失败。找不到对象。
错误出现在Set sharedDestinationFolder = sharedInbox.Folders("MyFolderEmails")
Public Sub test2()
MoveSelectionToFolder
End Sub
Private Sub MoveSelectionToFolder()
Dim NS As nameSpace
Dim sharedInbox As folder
Dim sharedDestinationFolder As folder
Dim sharedItems As Selection
Dim i As Long
Set NS = Application.GetNamespace("MAPI")
Set sharedInbox = NS.Folders("Outbound TTA").Folders("réception")
Set sharedDestinationFolder = sharedInbox.Folders("MyFolderEmails")
Set sharedItems = ActiveExplorer.Selection
For i = sharedItems.Count To 1 Step -1
sharedItems(i).Move sharedDestinationFolder
Next i
Set NS = Nothing
Set sharedItems = Nothing
Set sharedInbox = Nothing
Set sharedDestinationFolder = Nothing
End Sub
另外,即使是相似的代码也有相同的命运,只能工作一次;之后他们显示错误。
【问题讨论】:
-
这很令人费解。您的代码似乎没有任何问题。在移动项目之前,请尝试在循环
If TypeName(sharedItems(i)) = "MailItem" Then中添加此条件。还有,你说“第一次”和“第二次”,什么时候又变成“第一次”了?我的意思是它什么时候再次起作用?是在您退出Outlook并重新启动它的时候吗?我只是在想你可以在代码的开头重置一些东西。 -
是的,在我关闭并重新启动 Outlook 后,它再次起作用。是的,重置是解决方案。但是要重置什么?我在这个问题上待了一个星期,无法超越这一点。工作一次,之后出错。问题是它没有“看到”“接收”收件箱中的任何子文件夹(我的意思是代码)。这个问题在我的一个学院的另一台计算机上是相同的。所以前景非常好......
-
尝试通过在
Set NS = Application.GetNamespace("MAPI")之后添加此行NS.Logon "", "", False, True来刷新您的收件箱。来自access-programmers.co.uk/forums/threads/… -
我确实这样做了,行为是一样的:工作一次,之后不再工作(它给出了与上面相同的错误)。
标签: vba error-handling outlook move shared-directory