Pergunta

Existe uma maneira de encontrar programaticamente o local do Outlook arquivo .pst do usuário atual (s) através de uma entrada chamada de API ou registro?

Foi útil?

Solução

Com Outlook Redenção , você pode iterar os armazenamentos de mensagens em VBA usando RDOStorescollection, acessível através da RDOSession.Stores propriedade.

Eu estou olhando para a possibilidade de fazer algo semelhante em out-of-the-box VBA ...

EDIT:

Obviamente, o caminho para o PST é codificada na seqüência storeId. Google transformou-se este :

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

Apenas testado, funciona como projetado.

Outras dicas

O caminho deve estar em algum lugar em:

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

Talvez isso ajude um pouco.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top