ABRIR TELA PARA SELECIONAR DIRETORIO

USUARIO.EXCLUIDOS 25/03/2005 14:53:32
#74907
Pessoal, alguém sabe como faço pra abrir aquela tela que seleciona alguma pasta e pega qual pasta que foi? Tipo o commondialog, porque esse pega os arquivos, preciso do que pega o diretorio. Obrigado.
USUARIO.EXCLUIDOS 25/03/2005 15:05:18
#74909
usa o controle dirlistbox que já se inicia na barra de ferramentas do vb
USUARIO.EXCLUIDOS 25/03/2005 15:13:38
#74911
Cara, o brabo é que esse não dá pra mim, tem que ser aquele que abre igual o commondialog. porque quando a pessoa escolher um diretorio ele gravar o diretorio na variavel e se ele nao escolher nenhuma falar que nao escolheu.
THIAGO.CESAR 25/03/2005 16:37:59
#74924
Resposta escolhida
Bruno,

Adicione em seu projeto a referência
Microsoft Shell Controls and Automations (Shell32.dll)

Então você usa o seguinte código:
Dim Sh as Shell, Pasta as String
Set Sh = New Shell
Pasta = Sh.BrowseForFolder(Me.hWnd, "Selecione o diretório", 1)
MsgBox "O Diretório selecionado foi: " & Pasta


Até logo
THIAGO.CESAR 25/03/2005 16:48:15
#74928
Bruno

O código que eu postei acima devolve o nome da pasta mas não devolve o nome do arquivo.
Encontrei este código que está completo. Estava em um dos projetos que guardo no meu baú, acho que baixei do VBMania mesmo, mas não lembro o link nem para botar como referência...

Private Type tProcuraInformação
hWndOwner As Long
pidlRoot As Long
sDisplayName As String
sTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type

Private Declare Function SHBrowseForFolder Lib "Shell32.dll" (bBrowse As tProcuraInformação) As Long
Private Declare Function SHGetPathFromIDList Lib "Shell32.dll" (ByVal lL_Item As Long, ByVal sDir As String) As Long

Public Function sProcuraPorDiretório(sTitulo As String) As String
On Error Resume Next
'ACIONA O BROWSER A PROCURA DE DIRETÓ“RIO

Dim oProcuraInformação As tProcuraInformação
Dim lItem As Long
Dim sNomeDiretório As String

oProcuraInformação.hWndOwner = hWnd
oProcuraInformação.pidlRoot = 0
oProcuraInformação.sDisplayName = Space$(260)
oProcuraInformação.sTitle = sTitulo
oProcuraInformação.ulFlags = 1 ' Retorna nome do diretorio.
oProcuraInformação.lpfn = 0
oProcuraInformação.lParam = 0
oProcuraInformação.iImage = 0

lItem = SHBrowseForFolder(oProcuraInformação)
If lItem Then
sNomeDiretório = Space$(260)
If SHGetPathFromIDList(lItem, sNomeDiretório) Then
sProcuraPorDiretório = Left(sNomeDiretório, InStr(sNomeDiretório, Chr$(0)) - 1)
Else
sProcuraPorDiretório = ""
End If
End If
End Function

Para fazer esse negócio funcionar:
Private Sub Command1_Click()
Text1.Text = sProcuraPorDiretório("Selecione a pasta desejada...")
End Sub

Se alguém souber como completar o código que postei primeiro também ficarei agradecido...
USUARIO.EXCLUIDOS 26/03/2005 17:43:55
#75073
Tiago, valeu era isso mesmo que eu estava procurando.
Tópico encerrado , respostas não são mais permitidas