Haluk
Özel Üye
- Katılım
- 7 Temmuz 2004
- Mesajlar
- 12,406
- Excel Vers. ve Dili
-
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
- Altın Üyelik Bitiş Tarihi
- ∞
Bu arada bu "Gözat" olayı ile ilgili olarak, biraz daha uzun olmakla birlikte aşağıdaki kodu alternatif olarak önermek isterim.
Kodda belirtildiği gibi, sadece klasörler değil istenirse dosyalar da listelenip seçilebilmektedir ...
Aslında, dosya seçimi yukarıda Levent dostumun belirttiği kısa yoldan da yapılabilmekte ama Win2000 altında çalıştığı halde, WinXP (Home Ed.) ile çalışmamaktadır. Bu nedenle, eğer dosya da seçilecekse .... birazcık uzun olmasına rağmen bu yöntem daha iyidir.
Kodda belirtildiği gibi, sadece klasörler değil istenirse dosyalar da listelenip seçilebilmektedir ...
Kod:
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
Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) _
As Long
Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) _
As Long
'
Sub Test()
MsgBox GetDirectory
End Sub
'
Function GetDirectory(Optional Msg) As String
Dim bInfo As BROWSEINFO
Dim path As String
Dim r As Long, x As Long, pos As Integer
' Penceredeki kok yol = Masaustu :0& Belgelerim : &H5 Programlar : &H2
bInfo.pidlRoot = 0&
' Dialog penceresinin basligi
If IsMissing(Msg) Then
bInfo.lpszTitle = "Klasor seciniz ..."
End If
' Pencerede sadece klasorleri goruntulemek icin
bInfo.ulFlags = &H1
' Klasör ve dosyaları da beraber görmek istersek
' bInfo.ulFlags = &H4000
' Dialog penceresini goster
x = SHBrowseForFolder(bInfo)
' Geri donen sonucu ayikla
path = Space$(512)
r = SHGetPathFromIDList(ByVal x, ByVal path)
If r Then
pos = InStr(path, Chr$(0))
GetDirectory = Left(path, pos - 1)
Else
GetDirectory = ""
End If
End Function