excel - 从 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
任何帮助,将不胜感激。我已经坐了一段时间了,只是不能把它弄好。谢谢!
解决方案
Namespace 类的GetSharedDefaultFolderFolder
方法返回一个对象,该对象代表指定用户的指定默认文件夹。
我不太明白您希望从代码中得到什么,但我建议添加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
另外,我建议设置断点并在调试器下运行代码以查看幕后发生的情况。
推荐阅读
- python - 如何告诉 Pillow 网格是什么以及如何在其中放置文本以使其不会超过网格块?
- javascript - TypeError:client.on 不是函数(discord.js)
- python - 在python中自动下载所有必要的库
- spring-boot - MockRestServiceServer 看到先前测试的请求
- excel - 在函数和子之间传递变量
- c++ - C ++:使用else而不是if else时出现分段错误
- javascript - 如何使用函数运行输入值
- flutter - 如何将 DataCell 添加到 DataRow?
- vmware - 打印屏幕键在 VMware ESXi 中不起作用
- eclipse - 如何在纸莎草软件中增加类图的文本大小?