Notifications
Clear all

Abrir caixa de dialogo para selecionar pasta

3 Posts
2 Usuários
0 Reactions
2,180 Visualizações
(@jose_da_silva)
Posts: 24
Eminent Member
Topic starter
 

Caros amigos encontrei esta rotina abaixo e que atendeu plenamente as minhas necessidades. Mas ela não funciona no Excel 2000. Tem alguma solução que possa contornar o meu problema ?

...
Dim fd As FileDialog
Dim arquivo As String
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
If fd.Show = -1 Then
arquivo = fd.SelectedItems(1)
MsgBox "A pasta selecionada é " & arquivo
Else: arquivo = ""
End
End If

 
Postado : 05/03/2012 5:43 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

José, em uma pesquisa rápida, encontrei varios foruns onde dizem que esta propriedade nãp é suportada pelo excel 2000, e em alguns citam até a utilização de APIs.

Então segue abaixo alguns links, como não tenho o excel 2000, não tenho como testar para verificar se realmente não suporta, faça os testes e retorne :

Neste tem um modelo para baixar :
Allow User to Browse for a Folder
Version tested with 2000, 2002, 2003
http://www.vbaexpress.com/kb/getarticle.php?kb_id=246

Browse For Folder
http://www.cpearson.com/excel/browsefolder.aspx

Neste temops com a utilização de uma DLL :
Excell 2000 - Select Folder (Get Folder Path)
'// Requires DLL version shell32.dll version 4.71 or later
'// Operating systems
'// Win2000, WinNT 4.0 with Internet Explorer*4.0, Win98, Win95 with Internet Explore

http://www.mrexcel.com/forum/showthread.php?t=62434

[]s

 
Postado : 05/03/2012 6:52 pm
(@jose_da_silva)
Posts: 24
Eminent Member
Topic starter
 

Caro Mauro, dentre os Links postados, o último (abaixo) contem um rotina mais enxuta, e que atendeu as minhas necessidades. Obrigado.

http://www.mrexcel.com/forum/showthread.php?t=62434

Na minha aplicação usei a rotina dentro de uma função, e que adaptada ficou assim :

Function Abre_Pasta()

MsgBox ("Eu vou abrir o Windows Explorer para voce selecionar a pasta onde encontra-se o arquivo!")
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0, "Por Favor selecione a Pasta", 0, "C:")
If (Not objFolder Is Nothing) Then
On Error Resume Next
If IsError(objFolder.Items.Item.Path) Then diretorio = CStr(objFolder): GoTo Here
On Error GoTo 0
If Len(objFolder.Items.Item.Path) > 3 Then
diretorio = objFolder.Items.Item.Path & Application.PathSeparator
Else
diretorio = objFolder.Items.Item.Path
End If
Else
MsgBox "Cancelado pelo Usuário !": End
End If

Here:
MsgBox "Voce selecionou a pasta -> " & diretorio, vbInformation, "ObjectFolder:= " & objFolder

Set objFolder = Nothing
Set objShell = Nothing

End Function

 
Postado : 06/03/2012 11:39 am