Bir klasör içinde bulunan ses dosyalarının toplam sayısını ve süresini veren alternatif bir makro kodudur.
Option Explicit
Sub KlasordekiSesDosyalarininToplamSuresiniBul()
'--------------------------------------------------
'Değişkenler
'--------------------------------------------------
Dim objShell As Object
Dim objKlasor As Object
Dim objKlasorOge As Object
Dim klasor As Variant
Dim klasor_yolu As String
Dim i As Integer
Dim toplam_dosya_sayisi As Integer
Dim toplam_sure As Date
'--------------------------------------------------
'Alan Temizleme
'--------------------------------------------------
Columns("A:B").Clear
Range("A1").Select
'--------------------------------------------------
'Hazırlık
'--------------------------------------------------
klasor = "C:\arsiv\ses-dosyalari"
klasor_yolu = Dir$(klasor & "\*.*")
Set objShell = CreateObject("Shell.Application")
Set objKlasor = objShell.Namespace(klasor)
i = 0
toplam_sure = 0
'--------------------------------------------------
'Listeleme
'--------------------------------------------------
Do While klasor_yolu <> ""
ActiveCell.Offset(i, 0) = klasor_yolu
Set objKlasorOge = objKlasor.ParseName(klasor_yolu)
ActiveCell.Offset(i, 1) = objKlasor.GetDetailsOf(objKlasorOge, 27)
toplam_sure = toplam_sure + ActiveCell.Offset(i, 1)
i = i + 1
klasor_yolu = Dir$()
Loop
'--------------------------------------------------
'Bilgilendirme
'--------------------------------------------------
ActiveCell.Offset(i + 1, 0) = "Toplam Dosya Sayısı = " & i
ActiveCell.Offset(i + 1, 1) = "Toplam Süre = " & toplam_sure
ActiveCell.Offset(i + 1, 1) = Format(ActiveCell.Offset(i + 1, 1), "ss:dd:nn")
'--------------------------------------------------
'Değişken Temizleme
'--------------------------------------------------
Set objKlasorOge = Nothing
Set objKlasor = Nothing
Set objShell = Nothing
End Sub
Option Explicit
Sub KlasordekiSesDosyalarininToplamSuresiniBul()
'--------------------------------------------------
'Shell.Application nesnesi oluşturmak
've buradan klasör ayarını yapmak
'için kullanılacak olan değişken.
'--------------------------------------------------
Dim objShell As Object
'--------------------------------------------------
'Bunu da ilgili klasördeki dosyalardan
'bilgi çekmek için kullanacağız. Ana
'klasörümüzü ayarlıyoruz bu değişkenle.
'--------------------------------------------------
Dim objKlasor As Object
'--------------------------------------------------
'Klasörün içindeki dosyalara
'ulaşmak ve bilgi çekmek için
'kullanacağımız değişken.
'--------------------------------------------------
Dim objKlasorOge As Object
'--------------------------------------------------
'Klasörümüzün yolunu bu değişkene ekliyoruz.
'String ifade girişi yapıyoruz.
'--------------------------------------------------
Dim klasor As Variant
'--------------------------------------------------
'klasor değişkenindeki değere göre
'kod çalıştıracağız ve sonucu bu
'değişkene atayacağız.
'--------------------------------------------------
Dim klasor_yolu As String
'--------------------------------------------------
'Döngü için kullanılacak değişken.
'--------------------------------------------------
Dim i As Integer
'--------------------------------------------------
'Raporlama için toplam dosya sayısını tutan değişken.
'--------------------------------------------------
Dim toplam_dosya_sayisi As Integer
'--------------------------------------------------
'Raporlama için süre bilgisini tutan değişken.
'--------------------------------------------------
Dim toplam_sure As Date
'--------------------------------------------------
'İlk önce temizliğimizi güzelce yapıyoruz.
'Yeniden çalıştırdığımızda karışıklık
'olmasının önüne geçmiş bulunuyoruz böylelikle.
'--------------------------------------------------
Columns("A:B").Clear
Range("A1").Select
'--------------------------------------------------
'Değişkenlere gerekli atamaları yapıyoruz.
'--------------------------------------------------
klasor = "C:\arsiv\ses-dosyalari"
klasor_yolu = Dir$(klasor & "\*.*")
Set objShell = CreateObject("Shell.Application")
Set objKlasor = objShell.Namespace(klasor)
i = 0
toplam_sure = 0
'--------------------------------------------------
'Klasördeki tüm dosyaları incele.
'Tüm dosyalar incelenene kadar
'döngü devam etsin, aksi halde dursun.
'--------------------------------------------------
Do While klasor_yolu <> ""
'--------------------------------------------------
'A sütunundaki son boş hücreye dosya
'ismini aşağıdaki kodlar aracılığıyla
'yazdırıyoruz.
'--------------------------------------------------
ActiveCell.Offset(i, 0) = klasor_yolu
Set objKlasorOge = objKlasor.ParseName(klasor_yolu)
'--------------------------------------------------
'A sütunundaki son boş hücreye dosya
'süresini aşağıdaki kodlar aracılığıyla
'yazdırıyoruz. 27 sayısı süreyi veriyor ama
'bu sanırım dosyadan dosyaya değişebiliyor.
'Parametre listesini döngüyle yazdırabilir
've buna göre size uygun parametrenin sayısını
'seçebilirsiniz.
'--------------------------------------------------
ActiveCell.Offset(i, 1) = objKlasor.GetDetailsOf(objKlasorOge, 27)
toplam_sure = toplam_sure + ActiveCell.Offset(i, 1)
i = i + 1
klasor_yolu = Dir$()
Loop
'--------------------------------------------------
'Burada da toplam dosya sayısını
've toplam süre bilgisini A ve B
'sütunlarındaki verinin sonuna yazdırdık.
'--------------------------------------------------
ActiveCell.Offset(i + 1, 0) = "Toplam Dosya Sayısı = " & i
ActiveCell.Offset(i + 1, 1) = "Toplam Süre = " & toplam_sure
ActiveCell.Offset(i + 1, 1) = Format(ActiveCell.Offset(i + 1, 1), "ss:dd:nn")
'--------------------------------------------------
'Değişken temizliği yapıyoruz.
'--------------------------------------------------
Set objKlasorOge = Nothing
Set objKlasor = Nothing
Set objShell = Nothing
End Sub