• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

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

Katılım
17 Haziran 2008
Mesajlar
1,874
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,398
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,874
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,746
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,398
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,746
Excel Vers. ve Dili
2010-2016
Zeki bey teşekkür ederim.
 
Katılım
17 Haziran 2008
Mesajlar
1,874
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,398
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,874
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,398
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,874
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