How to find full path of Outlook .pst file?
Question
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?
Solution
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.
OTHER TIPS
The path should be somewhere under:
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook]
Maybe this helps a bit.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow