访问Excel VBA的共享Outlook收件箱



我正在尝试访问Excel VBA的共享收件箱电子邮件,但是我的代码无法正常运行,并且仅在个人收件箱上工作。

我已经在个人收件箱上尝试了下面的代码,并且效果很好。不太确定如何接近共享收件箱,这可能是共享收件箱的设置方式。

Dim OutlookApp As Object, MailFolder As Object, SharedMailbox as Object, OutlookItem as Object
Set OutlookApp = CreateObject("Outlook.Application")
'This line works for personal inbox
'Set MailFolder = OutlookApp.Session.Folders("email@outlook.com").Folders("Inbox")
'Trying to modify below to access shared inbox
Set SharedMailbox = OutlookApp.Session.CreateRecipient("shared@email.com")
'This line below causes error, specifically olFolderInbox
Set MailFolder = OutlookApp.Session.GetSharedDefaultFolder(SharedMailbox, olFolderInbox) 
For Each OutlookItem In MailFolder.Items
'other code runs here
Next

也许是由于我使用后期绑定方法并将某些东西与早期结合混合在一起?但是我想保持较晚的绑定以提高兼容性。

我播放了以下代码,但它遇到了类似的问题。

Dim OutlookNS as Object
Set OutlookNS = OutlookApp.GetNamespace("MAPI")
OutlookNS.logon
Set SharedMailbox = OutlookNS.CreateRecipient("shared@email.com")
SharedMailbox.resolve
If SharedMailbox.resolved Then
    Set MailFolder = OutlookNS.GetSharedDefaultFolder(SharedMailbox, olFolderInbox)
End If

任何帮助将不胜感激。我已经坐了一段时间了,只是无法正确。谢谢!

名称空间类的getSharedDefaultFolder方法返回一个Folder对象,该对象代表指定用户指定的默认文件夹。

我不太了解您从代码中获得的期望,但是我建议添加Display方法显示共享文件夹:

Dim OutlookNS as Outlook.Namespace
Set OutlookNS = OutlookApp.GetNamespace("MAPI")
OutlookNS.Logon
Set SharedMailbox = OutlookNS.CreateRecipient("shared@email.com")
SharedMailbox.resolve
If SharedMailbox.resolved Then
    Set MailFolder = OutlookNS.GetSharedDefaultFolder(SharedMailbox, olFolderInbox)
    MailFolder.Display
End If

另外,我建议设置一个断点并在调试器下运行代码,以查看引擎盖下发生的情况。

最新更新