Цикл через PST в Outlook 2003 с VBA - PullRequest
3 голосов
/ 07 ноября 2011

В Outlook 2007 я могу циклически перемещаться по почтовым хранилищам, включая PST, используя такой код:

Dim stores As Outlook.stores
Set stores = objNamespace.stores
Dim store As Outlook.store

For Each store In stores
    MsgBox store.FilePath
Next

Однако в Outlook 2003 объекты Outlook.store и Outlook.stores несуществовать.

Существуют ли эквивалентные объекты в Outlook 2003?Какой другой метод я мог бы использовать для просмотра почтовых магазинов?

Спасибо.

1 Ответ

4 голосов
/ 08 ноября 2011

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

Sub LoopThruMailboxes()

Dim olApp As Outlook.Application
Dim olNS As Outlook.NameSpace
Dim mailboxCount As Long
Dim i As Long
Dim folder As Outlook.MAPIFolder

' get local namespace
Set olApp = Outlook.Application
Set olNS = olApp.GetNamespace("MAPI")

mailboxCount = olNS.Folders.count

For i = 1 To mailboxCount
  Set folder = olNS.Folders(i)

  Debug.Print folder.EntryID
  Debug.Print folder.StoreID
  Debug.Print folder.Name
  Debug.Print folder.FolderPath
Next i

End Sub

folder.Name - имя почтового ящика, folder.StoreID - хранилищеID (я не уверен, что вы имели в виду под «путем к файлу хранилища», я все равно не увидел ничего, что выглядело соответствующим).

Вот функционализированная версия, которая возвращает имя папки и идентификатор хранилища в виде массива, который вы можете назначить непосредственно списку:

Function GetMailBoxInfo() As String()

Dim olApp As Outlook.Application
Dim olNS As Outlook.NameSpace
Dim mailboxCount As Long
Dim i As Long
Dim folder As Outlook.MAPIFolder
Dim tempString() As String

' get local namespace
Set olApp = Outlook.Application
Set olNS = olApp.GetNamespace("MAPI")

mailboxCount = olNS.Folders.count

' size array accordingly
ReDim tempString(1 To mailboxCount, 1 To 2)

For i = 1 To mailboxCount
  Set folder = olNS.Folders(i)

  tempString(i, 1) = folder.Name
  tempString(i, 2) = folder.StoreID
Next i

  GetMailBoxInfo = tempString

End Function

ex:

ListBox1.List = GetMailBoxInfo
...