Доступ к общему почтовому ящику Outlook из Excel VBA - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь получить доступ к общим почтовым ящикам входящих сообщений из 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

Любая помощь будет оценена.Я сидел на этом некоторое время и просто не могу понять это правильно.Спасибо!

1 Ответ

0 голосов
/ 09 июля 2019

Метод GetSharedDefaultFolder класса Namespace возвращает объект 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

Кроме того, я бы рекомендовал установить точку останова и запустить код под отладчиком, чтобы посмотреть, что происходит под капотом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...