BrowseForFolder Objesinde Masaüstü seçildiğinde hata almamak için ne yapılmalıdır?

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Kod:
Dim klasor As Object
Set klasor = CreateObject("Shell.Application").BrowseForFolder(0, "Lütfen bir klasör seçin !", &H100)
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Nasıl bir hata alıyorsunuz?
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Run-Time Error '91':
Objext Variable or with block variable not set

hatasını verdi,kten sonra debug deyince kırmızı satırda duruyor. Sayın levent bey
Kod:
Sub Bos_Klasor_Sil()
'Excel.web.tr/anemos
'=================================================================================================='II
'IIIIIIIIII       Seçilen klasörün içerisindeki boş klasörleri siler.                   'IIIIIIIIII'II
'=================================================================================================='II
1 Dim klasor, fL, f As Object, yol$
2 Set klasor = CreateObject("Shell.Application").BrowseForFolder(0, "Lütfen bir klasor seçin !", 1)
3    If klasor Is Nothing Then Exit Sub
[COLOR=red][B]4    yol = klasor.Items.Item.Path[/B][/COLOR]
5    DoEvents
6     Set fL = CreateObject("Scripting.FileSystemObject").GetFolder(yol).SubFolders
7     On Error Resume Next
8     For Each f In fL
9        If Dir(f.Path) = "" Then RmDir f.Path
10        yol = f.Path
11        GoTo 5
12    Next
13    On Error GoTo 0
14    Set fL = Nothing: Set f = Nothing: Set klasor = Nothing: yol = ""
End Sub
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Masaüstünün yolunu bulmak için aşağıdaki kodu kullanabilirsiniz.

Kod:
yol=CreateObject("Wscript.Shell").SpecialFolders("Desktop")
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
levent hocam alakanıza teşekkür ederim Ancak önerdiğiniz yöntem daima masaüsütü için çalışır genel bir yöntem varmıdır?
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,653
Excel Vers. ve Dili
Pro Plus 2021
Kod:
Sub Bos_Klasor_Sil()
    Set klasor = CreateObject("Shell.Application").BrowseForFolder(0, "Lütfen bir klasor seçin !", 1)
    If klasor Is Nothing Then Exit Sub
    yol = klasor.self.Path
    Set fL = CreateObject("Scripting.FileSystemObject").GetFolder(yol).subfolders
    For Each f In fL
        If f.Files.Count = 0 And f.subfolders.Count = 0 Then RmDir f.Path
    Next
    Set fL = Nothing: Set f = Nothing: Set klasor = Nothing: yol = ""
End Sub
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
sn veyselemre çok teşekkür ederim evde deneyeceğim ama baya bir kısalmış kodlar. :)
 
Üst