Да.
Из отрывка тега из повторного входа :
Подпрограмма считается повторно входящей, если ее можно безопасно вызвать до завершения предыдущего вызова.
blockquote>В вашем случае, поскольку функция возвращает адрес только глобальной (статической) переменной, которая должна оставаться постоянной после запуска программы, функция хорошо возвращается.
IMO, реентерабельная функция может получать доступ к глобальным и статическим данным, без изменения , поэтому получение адреса глобальной переменной неплохо для реентерабельной функции.
С Освобождением Outlook можно выполнить итерации банков сообщений в использовании VBA RDOStores
набор, доступный через RDOSession.Stores
свойство.
Я изучаю возможность выполнения чего-то подобного в out-of-the-box VBA...
Править:
Очевидно, путь к PST кодируется в строке StoreId. Google поднял это:
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
Просто протестированный, работы, как разработано.
Путь должен быть где-нибудь под:
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows, передающий Subsystem\Profiles\Outlook]
Возможно, это помогает немного.