>>651
漏れはこんな感じでやってる。

Private Sub cmdPath_Click()
    
    Dim typBrowseInfo As BROWSE_INFO
    Dim lFoldPointer As Long
    Dim sPathName As String

    With typBrowseInfo
        .hwOwner = frmMain.hWnd
        .lRoot = CSIDL_DESKTOP
        .sTitle = "フォルダを選択してください"
        .lOptions = BIF_RETURNONLYFSDIRS Or BIF_DONTGOBELOWDOMAIN
    End With

    lFoldPointer = SHBrowseForFolder(typBrowseInfo)

    sPathName = String$(256, vbNullChar)

    Call SHGetPathFromIDList(lFoldPointer, sPathName)

    CoTaskMemFree lFoldPointer

    If Left(sPathName, 1) <> Chr(0) Then
        Debug.Print LCase(sPathName)
    End If

End Sub