Klasör İçindeki, Dosya ve Klasör Özelliklerini Listelemek

Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Selamlar uzmanlarım. Bir kaç saattir arama yapıyorum.

Şu linkte istediğime benzer kodları görebildim.

http://www.excel.web.tr/showthread.php?t=45766&highlight=dosya+liste

Özellikle Zeki Gürsoy uzmanımın kodları güzel
http://www.excel.web.tr/showpost.php?p=248453&postcount=6








İstediğim şu:

Excel deki makroyu tıkladığımda;

Bir klasör içindeki hem dosyaların, hem de klasörlerin , hem adını hem de boyutunu vermeli. Özellikle boyutu benim için önemli. Yanına oluşturulma tarihi, değiştirilme tarihi gibi bilgiler de verilebiliyorsa daha iyi olur.


Biliyorsunuz Windowsta "ayrıntılar" görünümüne göre ayarlasak bile , klasörlerin boyutunu alamıyoruz. Ancak başka programlarla alabiliyoruz.


Not: Bir klasörün içinde klasör varsa , onun da sadece tıpkı dosyalar gibi, adı, boyutu tarihleri olması yeterli. Yani klasörün içindeki klasörün; içindeki dosyaların ayrıntısına hiç gerek yok.


Saygılarımla
 
Son düzenleme:
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Hamitcan uzmanım teşekkürler yalnız istediğim özellik bu linkte yok.

Kod:
Sub Start()
Dim klasor As Object
 
Set klasor = CreateObject("Shell.Application").BrowseForFolder _
                    (0, "Lütfen bir klasor seçin !", 1)
                    
Liste (klasor.Items.Item.Path)
AltListe (klasor.Items.Item.Path)
 
Set klasor = Nothing
End Sub
 
Private Sub Liste(yol As String)
Dim dosya As String, i As Long
 
    dosya = Dir(yol & "\*.*")
    i = 1
    While dosya <> ""
        DoEvents
        i = i + 1
        Cells(i, 1) = yol & dosya
        dosya = Dir
    Wend
End Sub
 
Private Sub AltListe(yol As String)
Dim fL As Object, f As Object, dosya As String, j As Long
Set fL = CreateObject("Scripting.FileSystemObject").GetFolder(yol).SubFolders
 
On Error GoTo sonraki
For Each f In fL
    dosya = Dir(f.Path & "\*.*")
    
    While dosya <> ""
        DoEvents
        j = [a65000].End(3).Row + 1
        Cells(j, 1) = yol & "\" & dosya
        dosya = Dir
    Wend
    
    AltListe (f.Path)
sonraki:
Next

Set fL = Nothing
End Sub

şu kodların üzerinde bir düzenlenme yapılabilirse işimi görecektir.

ÖRNEK:

A sütununda seçtiğim klasörün içindeki dosya ve klasörlerin isimleri olabilir




B sütununda seçtiğim klasörün içindeki dosya ve klasörlerin boyutları olabilir. (mb cinsinden ama şöyle olmalı: 1,457 mb.... böyle çok iyi olur :)
-yani 1,5 mb gibi yuvarlanmış olmasın-)


C sütununda seçtiğim klasörün içindeki dosya ve klasörlerin oluşturulma tarihleri olabilir



D sütununda seçtiğim klasörün içindeki dosya ve klasörlerin değiştirilme tarihleri olabilir

Müsait zamanınızda yapabilirseniz memnun olurum, olmuyorsa da canınız sağolsun.

İlgilenmeniz bile yeter.

Saygılar
Teşekkürler saygılar.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,256
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Sizin için dosya veya klasör bazı özelliklerini veren fonksiyon hazırladım.
Yukarıdaki koda montajlayın. ;)

Not: HamitBey' in önerdiği linki dikkatli okuyunuz...

Kod:
Private Function Get_Folder_Or_File(vPath As String, _
            Optional opt As String = "File") As String
                
[COLOR=DarkGreen]'opt = "File" ya da "Folder" olabilir.
'örnek: x = Get_Folder_Or_File("c:\test", "Folder")[/COLOR]
Dim fso As Object

Set fso = CreateObject("Scripting.FileSystemObject")

If opt = "File" Then

Get_Folder_Or_File = "Oluşturma : """ & fso.GetFile(vPath).DateCreated & """ "
Get_Folder_Or_File = Get_Folder_Or_File & "Son değişiklik : """ & fso.GetFile(vPath).DateLastModified & """ "
Get_Folder_Or_File = Get_Folder_Or_File & "Son erişim : """ & fso.GetFile(vPath).DateLastAccessed & """ "
Get_Folder_Or_File = Get_Folder_Or_File & "Boyut : """ & Format$(fso.GetFile(vPath).Size / 1024, "0.0#") & " MB"""

Else

Get_Folder_Or_File = "Oluşturma : """ & fso.GetFolder(vPath).DateCreated & """ "
Get_Folder_Or_File = Get_Folder_Or_File & "Son değişiklik : """ & fso.GetFolder(vPath).DateLastModified & """ "
Get_Folder_Or_File = Get_Folder_Or_File & "Son erişim : """ & fso.GetFolder(vPath).DateLastAccessed & """ "
Get_Folder_Or_File = Get_Folder_Or_File & "Boyut : """ & Format$(fso.GetFolder(vPath).Size / 1024, "0.0#") & " MB"""

End If

Set fso = Nothing
End Function
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Zeki Gürsoy uzmanım montajlayın derken nasıl yani? Kopyala yapıştır şeklinde mi? Nereden nereye kadar onu belirtmemişsiniz ki?

En üstteki eski kodlar sizin kodlarınızdı. Yeni kodları eski kodların neresinden itibaren yapıştıracağım.?

Onu bilmiyorum ki :)
 
Üst