Attribute VB_Name = "Browse"
Private Type Info
Owner As Long
pidlRoot As Long
pszDisplayName As String
TestoFinestra As String
End Type
Private Declare Function SHGetPathFromIDList Lib "SHELL32.DLL" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Declare Function SHBrowseForFolder Lib "SHELL32.DLL" Alias "SHBrowseForFolderA" (lpBrowseInfo As Info) As Long
'Mostra la finestra Sfoglia cartelle
Public Function BrowseFolder(hWnd As Long, Testo As String) As String
Dim x As Long, BI As Info, dwIList As Long, szPath As String, wPos As Integer
With BI
.Owner = hWnd 'dice alla finestra che deve avere la priorità sul form che l'ha chiamata
.TestoFinestra = Testo 'imposta la scritta nella finestra
End With
dwIList = SHBrowseForFolder(BI)
szPath = Space$(512) 'stringa della lunghezza massima
'consentita al percorso di un file in Windows
x = SHGetPathFromIDList(ByVal dwIList, ByVal szPath)
If x = 1 Then
wPos = InStr(szPath, Chr(0))
BrowseFolder = Left$(szPath, wPos - 1)
Else
BrowseFolder = ""
End If
End Function