Outlook Selecting a Subfolder in the SharedMailbox

2020-03-31 03:02发布

I am having trouble trying to select a subfolder in SharedMailbox.
I have read a number of resources on GetSharedDefaultFolder.
However, struggling to put it together correctly.
Would be really great if you could help with this.

Sub ListOutlookEmailInfoInExcel()
  Dim olNS As Outlook.NameSpace
  Dim olTaskfolder As Outlook.MAPIFolder
  Dim olTask As Outlook.TaskItem
  Dim olItems As Outlook.Items

  Set o1NS = GetNamespace("MAPI")
  Set o1TaskFolder = o1NS.GetSharedDefaultFolder("Shared Folder 1", _
    olFolderInbox).Folders("admin")
  Set o1Items = o1TaskFolder.Items
End Sub

2条回答
ゆ 、 Hurt°
2楼-- · 2020-03-31 03:34

You first resolve the owner as described here http://www.slipstick.com/developer/working-vba-nondefault-outlook-folders/

"You can use the mailbox owner's display name, alias, or email address when resolving the recipient."

Sub ListOutlookEmailInfoInExcel()

Dim olNS As Outlook.NameSpace
Dim olTaskfolder As Outlook.MAPIFolder
Dim olTask As Outlook.TaskItem
Dim olItems As Outlook.Items

Dim objOwner As Outlook.Recipient

Set olNS = GetNamespace("MAPI")

Set objOwner = olNS.CreateRecipient("Shared Folder 1")
objOwner.Resolve

If objOwner.Resolved Then
    Set olTaskFolder = olNS.GetSharedDefaultFolder(objOwner, _
      olFolderInbox).Folders("admin")
    Set olItems = olTaskFolder.Items
End If

End Sub
查看更多
够拽才男人
3楼-- · 2020-03-31 03:37

The GetSharedDefaultFolder method of the Namespace class accepts two parameters: a Recipient object and the FolderType value.

The How to: Display a Shared Calendar of a Recipient article provides the following sample code in C#:

private void DisplayManagerCalendar()
{
    Outlook.AddressEntry addrEntry =
         Application.Session.CurrentUser.AddressEntry;
    if (addrEntry.Type == "EX")
    {
        Outlook.ExchangeUser manager =
        Application.Session.CurrentUser.
            AddressEntry.GetExchangeUser().GetExchangeUserManager();
        if (manager != null)
        {
            Outlook.Recipient recip =
                Application.Session.CreateRecipient(manager.Name);
            if (recip.Resolve())
            {
                try
                {
                    Outlook.Folder folder =
                       Application.Session.GetSharedDefaultFolder(
                          recip, Outlook.OlDefaultFolders.olFolderCalendar)
                       as Outlook.Folder;
                    folder.Display();
                }
                catch
                {
                    MessageBox.Show("Could not open manager's calendar.",
                       "GetSharedDefaultFolder Example",
                       MessageBoxButtons.OK,
                       MessageBoxIcon.Error);
                }
            }
        }
    }
}
查看更多
登录 后发表回答