2008-10-12 13 views

Répondre

5

Avec Outlook Redemption, vous pouvez itérer les banques de messages dans VBA à l'aide de la collection RDOStores, accessible via la propriété RDOSession.Stores.

Je cherche la possibilité de faire quelque chose de similaire dans hors-the-box VBA ...

EDIT:

De toute évidence, le chemin du PST est codé dans la chaîne de StoreID. Google se place this:

Sub PstFiles() 
    Dim f As MAPIFolder 

    For Each f In Session.Folders 
    Debug.Print f.StoreID 
    Debug.Print GetPathFromStoreID(f.StoreID) 
    Next f 
End Sub 

Public Function GetPathFromStoreID(sStoreID As String) As String 
    On Error Resume Next 
    Dim i As Long 
    Dim lPos As Long 
    Dim sRes As String 

    For i = 1 To Len(sStoreID) Step 2 
    sRes = sRes & Chr("&h" & Mid$(sStoreID, i, 2)) 
    Next 

    sRes = Replace(sRes, Chr(0), vbNullString) 
    lPos = InStr(sRes, ":\") 

    If lPos Then 
    GetPathFromStoreID = Right$(sRes, (Len(sRes)) - (lPos - 2)) 
    End If 
End Function 

testé Juste, fonctionne comme prévu.

+0

Ce code fonctionne sans avoir à utiliser Outlook Redemption. – Vic

+1

La commodité de Redemption est qu'elle expose explicitement la propriété RDOPstStore.PstPath (http://www.dimastr.com/redemption/rdostore.htm#RDOPstStore) sans avoir à pirater l'ID d'entrée du magasin. –

0

Le chemin doit être quelque part sous:

[HKEY_CURRENT_USER \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Windows Messaging Sous-système \ Profiles \ Outlook]

Peut-être que cela aide un peu .

Questions connexes