【问题标题】:Accessing shared outlook inbox from Excel VBA从 Excel VBA 访问共享 Outlook 收件箱
【发布时间】:2020-06-03 13:39:44
【问题描述】:

我正在尝试从 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

任何帮助将不胜感激。我已经坐了一段时间了,只是不能把它弄好。谢谢!

【问题讨论】:

  • “不工作”是什么意思?你有例外吗?它是什么?

标签: excel vba outlook


【解决方案1】:

命名空间类的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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-28
    • 2015-08-31
    • 2018-11-20
    • 1970-01-01
    • 2018-04-07
    • 2019-03-09
    • 2019-01-26
    • 2015-12-20
    相关资源
    最近更新 更多