mmm suggerirei di usare lo sfoglia cartelle dello shell32.dll
Eccoti un esempio
Quando clicchi:

Private Sub Sfoglia_Click()
On Error Resume Next
Dim Id As BROWSEINFO
Dim R As Long
Dim s As String * 260
R = SHBrowseForFolder(Id)
If R = 0 Then Exit Sub
If SHGetPathFromIDList(R, s) = 1 Then
s = Left(s, InStr(s, Chr(0)) - 1)
NomeCartella = Trim(s)
CoTaskMemFree R
End If
End Sub


Se vuoi chiarimenti dimmelo. La cartella selezionata la memorizza nella variabile nomeCartella.
Ops, mancano le dichiarazioni per usare le api.

Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpbi As BROWSEINFO) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long
Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal pv As Long)

Ciao ciao