Här är den kod som jag har använt i ett gammal program. Den är inte testad men jag tror nog att den fungerar :)
Lägg det här högst upp i din kod fil (eller i en egen class eller modul fil)
Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Private Type BrowseInfo
hwndOwner As Long
pIDLRoot As Long
pszDisplayName As Long
lpszTitle As Long
ulFlags As Long
lpfnCallback As Long
lParam As Long
iImage As Long
End Type
Public Function BrowseFolders(ByVal Title As String, ByVal hWnd As Long) As String
szTitle = Title
With tBrowseInfo
.hwndOwner = hWnd
.lpszTitle = lstrcat(szTitle, "")
.ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
End With
lpIDList = SHBrowseForFolder(tBrowseInfo)
If (lpIDList) Then
sBuffer = Space(MAX_PATH)
SHGetPathFromIDList lpIDList, sBuffer
BrowseFolders = Left(sBuffer, InStr(sBuffer, vbNullChar) - 1)
End If
End Function
och när du ska visa denna box så skriver du
Dim Read as String
Read = BrowseFolders("Select GP2 Location", Me.hWnd)
If Read <> "" Then
'En fil eller katalog är vald
End If
Om Read inte är tom så har användaren valt en katalog.
Här är en riktigt bra sida för API funktioner i VB, VB API.
/Viktor