2011-11-07 2 views
3

dans Outlook 2007, je suis en mesure de boucler dans les magasins de mails, y compris PSTs, en utilisant le code comme ceci:Loop Through PSTs dans Outlook 2003 avec VBA

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

For Each store In stores 
    MsgBox store.FilePath 
Next 

Cependant, dans Outlook 2003, le Outlook.store et Les objets Outlook.stores n'existent pas.

Existe-t-il des objets équivalents dans Outlook 2003? Quelle autre méthode puis-je utiliser pour faire une boucle dans les magasins de messagerie?

Merci.

+0

Y at-il quelque chose de spécifique que vous faites avec chaque magasin? Vous pouvez parcourir chaque boîte aux lettres dans Outlook 2003, mais en fonction de ce que vous faites, cela peut être possible ou non. – JimmyPena

+0

Je veux d'abord remplir une zone de liste avec le nom d'affichage du magasin, le chemin du fichier de stockage et l'ID du magasin. L'utilisateur sélectionne alors un magasin dans la liste et clique sur un bouton. Cela permettra d'enregistrer le StoreID dans une variable de chaîne. J'utiliserai ensuite la méthode NameSpace.GetItemFromID pour obtenir un MailItem. Enfin, j'appellerai MailItem.Display. –

Répondre

4

Cet exemple de code pour Outlook 2003 parcourt les boîtes aux lettres de niveau supérieur et imprime certaines propriétés dans la fenêtre Exécution. J'ai choisi les propriétés qui semblaient les plus utiles en fonction de votre demande.

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 est le nom de la boîte aux lettres, folder.StoreID est l'ID de magasin (je ne suis pas sûr de ce que vous vouliez dire par « chemin du fichier de magasin », je ne vois rien cela semblait pertinent de toute façon).

est ici une version functionized qui retourne le nom du dossier et l'ID de magasin comme un tableau, que vous pouvez attribuer directement à une zone de liste:

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

Merci. Par chemin de fichier de magasin, je veux dire le chemin et le nom de fichier du fichier PST, comme dans C: \ test.pst –

+0

Dans ce cas, ce lien pourrait aider: http://stackoverflow.com/questions/195849/how-to- find-full-path-of-outlook-pst-file – JimmyPena

+0

Je ne pourrai pas utiliser la DLL Redemption. Je ne serai pas en mesure de contrôler quel logiciel est sur l'ordinateur d'exécution, sauf qu'il exécutera Outlook 2003. Je dois utiliser exclusivement VBA. –