Domanda

Esiste un modo per trovare a livello di programmazione la posizione dei file .pst di Outlook dell'utente corrente tramite una chiamata API o una voce di registro?

È stato utile?

Soluzione

Con Redenzione di Outlook , puoi iterare gli archivi di messaggi in VBA utilizzando RDOStores , accessibile tramite la proprietà RDOSession.Stores .

Sto esaminando la possibilità di fare qualcosa di simile in VBA out-of-the-box ...

EDIT:

Ovviamente, il percorso al PST è codificato nella stringa StoreId. Google ha scoperto 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

Appena testato, funziona come previsto.

Altri suggerimenti

Il percorso dovrebbe essere da qualche parte sotto:

  

[HKEY_CURRENT_USER \ Software \ Microsoft \ Windows   NT \ CurrentVersion \ Windows Messaging   Subsystem \ Profiles \ Outlook]

Forse questo aiuta un po '.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top