Vba 获取对其他收件箱的引用

Vba 获取对其他收件箱的引用,vba,outlook,Vba,Outlook,我正在使用Outlook 2007,我的主邮箱是:Tait,Mark 我还向我的个人资料中添加了另一个邮箱:采购,请求 两者都显示为Outlook中的顶级文件夹: 邮箱-Tait,Mark> -会话历史记录 -已删除的项目 -草稿 -收件箱 -垃圾邮件 邮箱-采购,请求 --会话历史记录 --已删除的项目 --草稿 --收件箱 --垃圾邮件 我可以使用: Set Inbox=ns.GetDefaultFolder(olFolderInbox) 如何获取“采购,请求”邮箱中收件箱的参考信息?类似的

我正在使用Outlook 2007,我的主邮箱是:Tait,Mark

我还向我的个人资料中添加了另一个邮箱:采购,请求

两者都显示为Outlook中的顶级文件夹:

邮箱-Tait,Mark> -会话历史记录
-已删除的项目
-草稿
-收件箱
-垃圾邮件

邮箱-采购,请求
--会话历史记录
--已删除的项目
--草稿
--收件箱
--垃圾邮件

我可以使用:
Set Inbox=ns.GetDefaultFolder(olFolderInbox)


如何获取“采购,请求”邮箱中收件箱的参考信息?

类似的操作应该可以实现这一目的

Dim objNS As Outlook.NameSpace
Dim objFolder As Outlook.MAPIFolder
Set objNS = GetNamespace("MAPI")
Set objFolder = objNS.Folders("Procurement, Request")
Set objFolder = objFolder.Folders("Inbox")

此链接包含一些有用的代码-可能会引起兴趣

使用
名称空间。GetSharedDefaultFolder
。即使邮箱未在当前配置文件中打开,它也会工作。您仍然需要拥有打开邮箱和访问相关文件夹的权限当然:

Set vNamespace = Application.GetNamespace("MAPI")
set vRecipient = vNamespace.CreateRecipient("Procurement, Request")
if vRecipient.Resolve Then
  set vFolder = vNamespace.GetSharedDefaultFolder(vRecipient, olFolderInbox)
End If
如果需要打开其他用户的邮箱(所有文件夹都已关闭),可以使用及其.GetSharedMailbox方法:

 set Session = CreateObject("Redemption.RDOSession")
 Session.MAPIOBJECT = Application.Session.MAPIOBJECT
 set Store = Session.GetSharedMailbox("Procurement, Request")
 set vFolder = Store.GetDefaultFolder(olFolderInbox)
 MsgBox "The address of the mailbox owner: " & Store.Owner.Address

@MarkTait很高兴能提供帮助:)只有当商店已添加到当前配置文件中时,这才有效。@brettdj请告诉我如何将设置objFolder=objNS.Folders(“采购,请求”)和设置objFolder=objFolder.Folders(“收件箱”)自动化到类似于Public Sub AppResponseManage(项目为Outlook.MailItem)的函数中作为参数接收邮件项目(换句话说,我如何从邮件项目中提取邮箱名称和收件箱文件夹名称?)谢谢。请详细说明此代码如何回答此问题。
Dim olNS As NameSpace
Dim InputFolder As Outlook.MAPIFolder
Set olNS = Outlook.Application.GetNamespace("MAPI")

' Get reference to folder in users Mailbox for Input
Set InputFolder = olNS.Folders("Procurement, Request").Folders("Inbox")

' all the emails in the shared inbox are represented by:
InputFolder.Items