Использование Visual Basic для доступа к подпапке в почтовых ящиках?

StackOverflow https://stackoverflow.com/questions/8322432

Вопрос

Dim olApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
Set myOlItems = objNS.GetDefaultFolder(olFolderInbox).Items

Я использовал приведенный выше код, чтобы получить доступ к основному Outlook, но как получить доступ к папкам в почтовых ящиках, и его почта с использованием VBA!

Это было полезно?

Решение

Это очень близко :)

Чтобы получить все почтовые элементы в папке под названием «Temp» под почтовым ящиком, попробуйте это

Dim olApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim olFolder As Outlook.MAPIFolder
Dim msg As Outlook.MailItem

Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
Set olFolder = objNS.GetDefaultFolder(olFolderInbox)
Set olFolder = olFolder.Folders("Temp")

For Each msg In olFolder.Items
    Debug.Print msg.Subject
Next

Другие советы

Я обнаружил, что в моем почтовом ящике было несколько предметов, которые не были почтовыми элементами, которые приводят к остановке сценария. Это небольшое изменение позволило сценарию продолжать работать, если найдено что -то вроде приглашения на встречу:

Sub getmail()

Dim olApp As Outlook.Application
Dim objNS As Outlook.Namespace
Dim olFolder As Outlook.MAPIFolder

'Dim msg As Outlook.MailItem
Dim InboxItem As Object

Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
Set olFolder = objNS.GetDefaultFolder(olFolderInbox)
Set olFolder = olFolder.Folders("temp")

For Each InboxItem In olFolder.Items
    Debug.Print InboxItem.Subject
    Debug.Print InboxItem.EntryID
Next

End Sub

Спасибо за Ваш ответ! Мне очень помог!

(Мои извинения - хотели прокомментировать, но не хватает репутации ..)

И чтобы просверлить дальше вниз, продолжайте добавлять установленные линии Olfolder:

Set olFolder = objNS.GetDefaultFolder(olFolderInbox)
Set olFolder = olFolder.Folders("temp")
Set olFolder = olFolder.Folders("temp2")
Set olFolder = olFolder.Folders("temp3")

Получает вас в inbox temp temp2 temp3

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top