Cmq il codice è cosi composto in un modulo ho messo questo:

---------------------------------------------------------------------------

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


---------------------------------------------------------------------------

Nella form, ho creato questa funzione che poi eseguo con la pressione del pulsante

---------------------------------------------------------------------------

Private Function Percorso
Dim perc As String
perc = BrowseFolder(Me.hWnd, " la cartella desiderata:")

Dim p, p1, p2, p3() As String
p = perc
p2 = Split(p, "\")
p1 = p2(UBound(p2) - 1) & "\" & p2(UBound(p2))

Text7.Text = p1
End Function

---------------------------------------------------------------------------