2011-11-30 8 views
4
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 

Я использовал приведенный выше код, чтобы получить доступ к основной папке «Входящие», но как получить доступ к папкам в папке «Входящие» и ее почтой с помощью vba!Использование визуального базового для доступа к подпапке в папке «Входящие»?

ответ

15

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

Для того, чтобы получить все элементы электронной почты в папке под названием «Темп» под Входящие попробовать этот

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 
+4

+1 хотя мой личный вкус присваивает 'olFolder' в одном выражении, а не заменяет его вторым выражением:' Set olFolder = objNS.GetDefaultFolder (olFolderInbox) .Folders ("Temp") ' –

+0

thx Жан-Франсуа. Это хороший момент, это причуда моего кодирования VBA для Outlook, который сохраняется сегодня, хотя я и по-другому кодирую в других местах VBA и vbscript :) – brettdj

+2

+1 При доступе к папкам, отличным от по умолчанию, вам нужно пройти иерархию. Установка каскадных ссылок на объекты для ограничения количества точек - это лучшая практика, но когда я спешу, я буду вкладывать все в одну строку, как это делает @ Jean-FrançoisCorbett. – JimmyPena

3

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

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 

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

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

0

И далее детализировать, продолжайте добавлять набор olFolder строки:

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

получает вас \ Входящие \ temp \ temp2 \ temp3 \

 Смежные вопросы

  • Нет связанных вопросов^_^