Çözüldü Uzantı sayısına göre dosya boyutunu hesaplatmak

Katılım
17 Haziran 2008
Mesajlar
1,871
Excel Vers. ve Dili
Microsoft Ofis Profesyonel 2019 x64 TR
Altın Üyelik Bitiş Tarihi
26-03-2020
Aktif klasör ve alt klasörlerden belirlediğimiz dosyaların toplam boyutunu MB ( Megabayt ) cinsinde bir değişkene nasıl alabiliriz ?


yardımcı arkadaşa şimdiden Teşekkür ederim.
 

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
Aşağıdaki kod; bulunduğu klasör ve tüm alt klasörlerdeki "PDF" uzantılı dosyaların toplam adedini ve boyutunu verir.

Kod:
'   Haluk
'   30/12/2018
'
Dim Counter As Long, sumSize As Double
'
Sub Test()
    Dim myFolder As String
 
    myFolder = ThisWorkbook.Path
    Call GetFiles(myFolder, True)
 
    MsgBox "PDF dosya sayisi= " & Counter & vbCrLf & vbCrLf & "Toplam PDF boyutu=" & Format((sumSize / 1024) / 1024, "0.00 MB")
 
    Counter = Empty
    sumSize = Empty
End Sub
'
Sub GetFiles(SourceFolder As String, IncludeSubFolders As Boolean)
    Dim FSO As Object, strFolder As Object
    Dim SubFolder As Object, strFile As Object
 
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set strFolder = FSO.GetFolder(SourceFolder)
 
    For Each strFile In strFolder.Files
        If LCase(FSO.GetExtensionName(strFile.Name)) = "pdf" Then
            Counter = Counter + 1
            sumSize = sumSize + strFile.Size
        End If
    Next
 
    If IncludeSubFolders = True Then
        For Each strFolder In strFolder.SubFolders
            GetFiles strFolder.Path, True
        Next
    End If
 
    Set strFolder = Nothing
    Set FSO = Nothing
End Sub
.
 
Son düzenleme:
Katılım
17 Haziran 2008
Mesajlar
1,871
Excel Vers. ve Dili
Microsoft Ofis Profesyonel 2019 x64 TR
Altın Üyelik Bitiş Tarihi
26-03-2020
Haluk


Hocam çok Teşekkür ediyorum Tamamdır... elinize - yüreğinize sağlık.
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Haluk Bey konu ile alakalı ben de bir soru sorabilir miyim. Sadece konuya baktığım ve bazen gerek olabildiği için meraktan soruyorum.
Ana dizin ve altında 10-15 klasör olsun. Bu alt klasörlerin boyutlarını listeleme imkanı olur mu?
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,349
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Ana dizin ve altında 10-15 klasör olsun. Bu alt klasörlerin boyutlarını listeleme imkanı olur mu?
Alt dizinlerin gerekli olmadığını varsayarak;

PHP:
for each fld in fso.getfolder("c:\testfolder").subfolders
    debug.print fld.size
next
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Zeki bey teşekkür ederim.
 
Katılım
17 Haziran 2008
Mesajlar
1,871
Excel Vers. ve Dili
Microsoft Ofis Profesyonel 2019 x64 TR
Altın Üyelik Bitiş Tarihi
26-03-2020
Haluk

Hocam merhaba.;

Bu kodlara Progresbar ı ekleme şansımız olabilirmi ? klasör çok olduğunda , süre uzuyor malum...

Teşekkürler.
 

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
Haluk

Hocam merhaba.;

Bu kodlara Progresbar ı ekleme şansımız olabilirmi ? klasör çok olduğunda , süre uzuyor malum...

Teşekkürler.

Merhaba;

Kodlara ProgressBar nesnesi veya onun işini görecek şekilde standart nesnelerle ProgressBar'ın simulasyonu yapılabilir.

Kod:
________________________
|                       |
||||||||| % 58          |
|_______________________|

Ancak; yukarıda örnek olarak verdiğim ASCII -şeklinde görüldüğü gibi, söz konusu %58'i hesaplayıp da ProgressBar nesnesine yazdırabilmek için ilk önce tamamının önceden hesaplanmış olması gerekir ki; bu yüzde değeri hesaplanabilsin. Sizin probleminizde zaten alt klasör veya dosya sayısı bilinmediği için recursive tarzında (kendi kendini tetikleyen) bir kod hazırlamıştık.

Diğer yandan; siz klasörlerin fazlalığından dolayı kodun uzun sürdüğünden bahsediyorsunuz. Şunu unutmamanız gerekir ki; kodlara ProgressBar nesnesi ilave edildiği zaman, kodların çalışma süresi gerekli "%" hesaplaması nedeniyle daha da uzayacak ve ProgressBar'ın ekran tazelemesi gereksinimi nedeniyle sizin performansınızı iyice düşürecektir.

.
 
Son düzenleme:
Katılım
17 Haziran 2008
Mesajlar
1,871
Excel Vers. ve Dili
Microsoft Ofis Profesyonel 2019 x64 TR
Altın Üyelik Bitiş Tarihi
26-03-2020
Haluk

Kod:
________________________
|                       |
||||||||| % 58          |
|_______________________|

Ancak; yukarıda örnek olarak verdiğim ASCI -şeklinde görüldüğü gibi, söz konusu %58'i hesaplayıp da ProgressBar nesnesine yazdırabilmek için ilk önce tamamının önceden hesaplanmış olması gerekir ki; bu yüzde değeri hesaplanabilsin. Sizin problemizde zaten alt klasör veya dosya sayısı bilinmediği için recursive tarzında bir kod hazırlamıştık.
Hocam recursive tarzındaki bu uygulamaya simulasyon ekleyemeyiz mi, doğrumu ? yukarıdaki ASCI deki gibi bir uygulama işi görecektir.

||||||||| % 58 <- bu da yeterli olur. Bu zamanı nasıl hesaplatabilirz hocam
 

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
Sonu belli olmayan bu tür hesaplarda en kötü ihtimalle kodu 2 defa çalıştırırsınız. 1nci'sinde gerekli "toplam" miktarı bulursunuz, 2nci defa çalıştırıp, bu kez de ProgressBar'da % hesaplama işini yaparsınız. Bu işleri yaparken de çalışma süresi iyice artar tabii....

ProgressBar örnekleri de zaten forumda var.

İyi seneler...

.
 
Katılım
17 Haziran 2008
Mesajlar
1,871
Excel Vers. ve Dili
Microsoft Ofis Profesyonel 2019 x64 TR
Altın Üyelik Bitiş Tarihi
26-03-2020
Anladım. Teşekkür ediyorum Haluk bey.

İyi seneler...
 
Üst