【问题标题】:How to move an email between two folders on a shared mailbox?如何在共享邮箱的两个文件夹之间移动电子邮件?
【发布时间】:2022-08-09 21:28:22
【问题描述】:

我设法使用该站点在我的个人邮箱上获取代码。

当应用于共享邮箱时,它不起作用。

它适用于从收件箱移动到收件箱子文件夹的个人邮箱,称为测试

在共享邮箱上,我需要从共享邮箱收件箱移动到另一个名为 Complete 的文件夹。这是共享邮箱中的文件夹,不是子文件夹。

Sub MailmoveAP()
          
    Dim olApp As Outlook.Application
    Dim objNS As Outlook.NameSpace
    Dim olFolder As Outlook.MAPIFolder
    Dim msg As Outlook.MailItem
    Dim InboxItem As Object

    Set olApp = Outlook.Application
    Set objNS = olApp.GetNamespace(\"MAPI\")
    Set olFolder = objNS.GetSharedDefaultFolder(olFolderInbox)
    Set olFolder = olFolder.Folders(\"Test\")

    For Each msg In ActiveExplorer.Selection
       msg.Move olFolder
    Next
            
End Sub

标签: vba outlook


【解决方案1】:

NameSpace.GetSharedDefaultFolder 方法需要两个参数,而不像 GetDefaultFolder 那样需要一个参数。此方法用于委派方案,其中一个用户已将一个或多个默认文件夹(例如,他们的共享收件箱文件夹)的访问权限委派给另一个用户。例如:

Sub ResolveName() 
 Dim myNamespace As Outlook.NameSpace 
 Dim myRecipient As Outlook.Recipient 
 Dim CalendarFolder As Outlook.Folder 
 
 Set myNamespace = Application.GetNamespace("MAPI") 
 Set myRecipient = myNamespace.CreateRecipient("Eugene Astafiev") 
 
 myRecipient.Resolve 
 
 If myRecipient.Resolved Then 
   Call ShowCalendar(myNamespace, myRecipient)
 End If 
 
End Sub 
 
Sub ShowCalendar(myNamespace, myRecipient) 
 Dim CalendarFolder As Outlook.Folder 
 
 Set CalendarFolder = myNamespace.GetSharedDefaultFolder(myRecipient, olFolderCalendar) 
 CalendarFolder.Display 
End Sub

要获取Complete 文件夹,如果它与Inbox 位于同一级别,您可以使用收件箱文件夹的Parent 对象,然后获取一个子文件夹。查看如何在 Outlook 中Enumerate folders 并找到所需的。

【讨论】:

  • 你能帮助你提到的父对象吗,我需要在下面更改什么才能找到完整的文件夹。 If objOwner.Resolved Then Set olTask​​folder = olNS.GetSharedDefaultFolder(objOwner, _ olFolderInbox).Folders("Complete") 这是我调试的地方
  • 尝试使用olNS.GetSharedDefaultFolder(objOwner, olFolderInbox).Parent.Folders("Complete")
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-02
  • 2019-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多