ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Directory browser (https://www.excelbanter.com/excel-programming/317473-directory-browser.html)

Anat[_2_]

Directory browser
 

Hi,

Does anyone know a directory selector control? (browsing fo
directories without having to select a specific file)

Thanks,

Ana

--
Ana
-----------------------------------------------------------------------
Anat's Profile: http://www.excelforum.com/member.php...fo&userid=1670
View this thread: http://www.excelforum.com/showthread.php?threadid=31914


Bob Phillips[_6_]

Directory browser
 
Anat,

Here is one way. I believe that XL2002 has a browse dialog. I don't use 2002
myself, so you may need to play with this, but this is basically it

With Application.FileDialog(msoFileDialogFolderPicker)
.Show

MsgBox .SelectedItems(1)

End With

Look up FileDialog in the VBA help

The pre XL2002 way is

Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" _
(ByVal pidl As Long, _
ByVal pszPath As String) As Long

Private Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" _
(lpBrowseInfo As BROWSEINFO) As Long

Private Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type

'-------------------------------------------------------------
Function GetFolder(Optional ByVal Name As String = _
"Select a folder.") As String
'-------------------------------------------------------------
Dim bInfo As BROWSEINFO
Dim path As String
Dim oDialog As Long

bInfo.pidlRoot = 0& 'Root folder = Desktop

bInfo.lpszTitle = Name

bInfo.ulFlags = &H1 'Type of directory to Return
oDialog = SHBrowseForFolder(bInfo) 'display the dialog

'Parse the result
path = Space$(512)

GetFolder = ""
If SHGetPathFromIDList(ByVal oDialog, ByVal path) Then
GetFolder = Left(path, InStr(path, Chr$(0)) - 1)
End If

End Function

--

HTH

RP
(remove nothere from the email address if mailing direct)


"Anat" wrote in message
...

Hi,

Does anyone know a directory selector control? (browsing for
directories without having to select a specific file)

Thanks,

Anat


--
Anat
------------------------------------------------------------------------
Anat's Profile:

http://www.excelforum.com/member.php...o&userid=16706
View this thread: http://www.excelforum.com/showthread...hreadid=319142




Harald Staff

Directory browser
 
Hi Anat

Windows has one built in that you can use (if you use Windows that is). Se
Jim Rech's file
BrowseForFolder.zip
at
http://www.bmsltd.ie/MVP/Default.htm

HTH. Best wishes Harald

"Anat" skrev i melding
...

Hi,

Does anyone know a directory selector control? (browsing for
directories without having to select a specific file)

Thanks,

Anat


--
Anat
------------------------------------------------------------------------
Anat's Profile:

http://www.excelforum.com/member.php...o&userid=16706
View this thread: http://www.excelforum.com/showthread...hreadid=319142




Rob van Gelder[_4_]

Directory browser
 
Bob,

I run XL2003 and the code you supplied (FileDialog) runs fine.

Just so you know.

Cheers


--
Rob van Gelder - http://www.vangelder.co.nz/excel


"Bob Phillips" wrote in message
...
Anat,

Here is one way. I believe that XL2002 has a browse dialog. I don't use
2002
myself, so you may need to play with this, but this is basically it

With Application.FileDialog(msoFileDialogFolderPicker)
.Show

MsgBox .SelectedItems(1)

End With

Look up FileDialog in the VBA help

The pre XL2002 way is

Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" _
(ByVal pidl As Long, _
ByVal pszPath As String) As Long

Private Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" _
(lpBrowseInfo As BROWSEINFO) As Long

Private Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type

'-------------------------------------------------------------
Function GetFolder(Optional ByVal Name As String = _
"Select a folder.") As String
'-------------------------------------------------------------
Dim bInfo As BROWSEINFO
Dim path As String
Dim oDialog As Long

bInfo.pidlRoot = 0& 'Root folder = Desktop

bInfo.lpszTitle = Name

bInfo.ulFlags = &H1 'Type of directory to Return
oDialog = SHBrowseForFolder(bInfo) 'display the dialog

'Parse the result
path = Space$(512)

GetFolder = ""
If SHGetPathFromIDList(ByVal oDialog, ByVal path) Then
GetFolder = Left(path, InStr(path, Chr$(0)) - 1)
End If

End Function

--

HTH

RP
(remove nothere from the email address if mailing direct)


"Anat" wrote in message
...

Hi,

Does anyone know a directory selector control? (browsing for
directories without having to select a specific file)

Thanks,

Anat


--
Anat
------------------------------------------------------------------------
Anat's Profile:

http://www.excelforum.com/member.php...o&userid=16706
View this thread:
http://www.excelforum.com/showthread...hreadid=319142






Bob Phillips[_6_]

Directory browser
 
Rob,

I assumed that if it ran on 2002 it would run on 2003 :-)

Bob


"Rob van Gelder" wrote in message
...
Bob,

I run XL2003 and the code you supplied (FileDialog) runs fine.

Just so you know.

Cheers


--
Rob van Gelder - http://www.vangelder.co.nz/excel


"Bob Phillips" wrote in message
...
Anat,

Here is one way. I believe that XL2002 has a browse dialog. I don't use
2002
myself, so you may need to play with this, but this is basically it

With Application.FileDialog(msoFileDialogFolderPicker)
.Show

MsgBox .SelectedItems(1)

End With

Look up FileDialog in the VBA help

The pre XL2002 way is

Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" _
(ByVal pidl As Long, _
ByVal pszPath As String) As Long

Private Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" _
(lpBrowseInfo As BROWSEINFO) As Long

Private Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type

'-------------------------------------------------------------
Function GetFolder(Optional ByVal Name As String = _
"Select a folder.") As String
'-------------------------------------------------------------
Dim bInfo As BROWSEINFO
Dim path As String
Dim oDialog As Long

bInfo.pidlRoot = 0& 'Root folder = Desktop

bInfo.lpszTitle = Name

bInfo.ulFlags = &H1 'Type of directory to Return
oDialog = SHBrowseForFolder(bInfo) 'display the dialog

'Parse the result
path = Space$(512)

GetFolder = ""
If SHGetPathFromIDList(ByVal oDialog, ByVal path) Then
GetFolder = Left(path, InStr(path, Chr$(0)) - 1)
End If

End Function

--

HTH

RP
(remove nothere from the email address if mailing direct)


"Anat" wrote in message
...

Hi,

Does anyone know a directory selector control? (browsing for
directories without having to select a specific file)

Thanks,

Anat


--
Anat


------------------------------------------------------------------------
Anat's Profile:

http://www.excelforum.com/member.php...o&userid=16706
View this thread:
http://www.excelforum.com/showthread...hreadid=319142









All times are GMT +1. The time now is 11:40 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com