Is there a way to programmatically find the location of the current user\'s Outlook .pst file(s) through an API call or registry entry?
With Outlook Redemption, you can iterate the message stores in VBA using RDOStores
collection, accessible via the RDOSession.Stores
property.
I am looking into the possibility of doing something similar in out-of-the-box VBA...
EDIT:
Obviously, the path to the PST is encoded in the StoreId string. Google turned up 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
Just tested, works as designed.
The path should be somewhere under:
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook]
Maybe this helps a bit.