Windows özel klasörlerinin (belgelerim, masaüstü gibi) yollarını ve isimlerini listeleyen alternatif makro kodudur.
Sub OzelKlasorYollariniVeIsimleriniListeleTemelKod()
Dim OKlasor As Object
Dim yol As String
Set OKlasor = CreateObject("WScript.Shell").SpecialFolders
yol = OKlasor("Desktop")
MsgBox yol
End Sub
Şimdi de biraz daha detaylandıralım.
Sub OzelKlasorYollariniVeIsimleriniListele()
Dim OKlasor As Object
Dim dizi1, dizi2 As Variant
Set OKlasor = CreateObject("WScript.Shell").SpecialFolders
dizi1 = Array("mydocuments", "desktop", _
"allusersdesktop", "recent", _
"favorites", "programs", _
"startmenu", "sendto")
dizi2 = Array("Belgelerim", "Masaüstü", _
"Ortak Masaüstü", "Son Kullanılan Dosyalar", _
"Favoriler", "Programlar", _
"Başlat Menüsü", "SendTo")
Range("A1") = "Özel Klasör Yolu"
Range("B1") = "Özel Klasör Adı"
For i = LBound(dizi1) To UBound(dizi1)
Range("A" & i + 2) = OKlasor(dizi1(i))
Range("B" & i + 2) = dizi2(i)
Next
End Sub
Option Explicit
Sub OzelKlasorYollariniVeIsimleriniListele()
Dim OKlasor As Object
Dim i As Long
'--------------------------------------------------
'Tam yolunu almak istediğimiz klasörleri döngü
'kullanarak alacağız.
'
'dizi1'e WScript.Shell için gerekli olan
'parametreleri, dizi2'ye de (varsa) Türkçe
'karşılıklarını girdik.
'--------------------------------------------------
Dim dizi1, dizi2 As Variant
'--------------------------------------------------
'WScript.Shell ile özel klasörleri aldık.
'--------------------------------------------------
Set OKlasor = CreateObject("WScript.Shell").SpecialFolders
'--------------------------------------------------
'Tam yolunu alacağımız özel klasörler
'için parametre bilgilerini girdik.
'--------------------------------------------------
dizi1 = Array("mydocuments", "desktop", _
"allusersdesktop", "recent", _
"favorites", "programs", _
"startmenu", "sendto")
'--------------------------------------------------
'Özel klasörlerin bilinen adlarını girdik.
'--------------------------------------------------
dizi2 = Array("Belgelerim", "Masaüstü", _
"Ortak Masaüstü", _
"Son Kullanılan Dosyalar", _
"Favoriler", "Programlar", _
"Başlat Menüsü", "SendTo")
Range("A1") = "Özel Klasör Yolu"
Range("B1") = "Özel Klasör Adı"
'--------------------------------------------------
'Listeleme işlemini yaptırıyoruz.
'--------------------------------------------------
For i = LBound(dizi1) To UBound(dizi1)
Range("A" & i + 2) = OKlasor(dizi1(i))
Range("B" & i + 2) = dizi2(i)
Next
End Sub