VBA (Excel makrosu) kullanarak alt klasörler de dahil olmak üzere bir dosya listesi ve bir klasör listesi nasıl alınır.
Yayın Tarihi:12 Temmuz 2022.
INFOMARTION > VBA (Excel makrosu) kullanarak alt klasörler de dahil olmak üzere bir dosya listesi ve bir klasör listesi nasıl alınır.
Genel bakış.
VBA (Excel makrosu) kullanarak bir dosya listesinin ve alt klasörler de dahil olmak üzere bir klasör listesinin nasıl alınacağını açıklamak istiyorum. Bu makale aşağıdaki görevleri programlamak isteyen kişilere yöneliktir
- Bir klasör altındaki tüm dosya veya klasörlerin tam yollarıyla birlikte bir listesini almak istiyorum.
- Bir klasörün altındaki dosyalar veya klasörler için bir döngü içinde işlem yapmak istiyorsunuz.
İçindekiler
1. Programlama yöntemi
Referans programlama örnekleri aşağıda verilmiştir.
Function'da oluşturulduğu için, olduğu gibi kopyalanmasını ve yöntem çağrılarının Sub'dan yapılmasını istiyorum.
'Parameter Examples
'## filePath C:\Users\user\Desktop\test\
'## kind false:folder, true:file
'## list
Function getFolderOrFile(filePath As String, kind As Boolean, list As Collection) As Collection
'delete\
Dim filePathEnd As String
filePathEnd = Right(filePath, 1)
If filePathEnd = "\" Then
filePath = Left(filePath, Len(filePath) - 1)
End If
'Folder existence check
Dim result As String
result = Dir(filePath, vbDirectory)
If result = "" Then
MsgBox "File does not exist!"
Exit Function
End If
If kind Then
Dim buf As String
buf = Dir(filePath & "\*.*")
Do While buf <> ""
list.Add filePath & "\" & buf
buf = Dir()
Loop
Else
list.Add filePath
End If
Dim folder As Object
With CreateObject("Scripting.FileSystemObject")
For Each folder In .GetFolder(filePath).SubFolders
getFolderOrFile folder.Path, kind, list
Next folder
End With
End Function
Kullanmak için aşağıdakileri argüman olarak iletin.
- filePath・・・dizin. Örnek.)C:\Users\user\Desktop\test
- kind・・・Doğru, yanlış geç. True ise, dosyaların bir listesini döndürür. false ise, klasörlerin bir listesini döndürür.
- list・・・Koleksiyon, sonuçları saklamak için kullanılır. Örnek bir uygulama aşağıda verilmiştir.
Gerçek bir Fonksiyon çağrısının örnek bir uygulaması aşağıda gösterilmiştir.
Sub test()
Dim list As Collection
Set list = New Collection
getFolderOrFile "C:\Users\user\Desktop\test", False, list
Dim item As Variant
For Each item In list
'------TODO------
ThisWorkbook.Worksheets(1).Cells(1, 1).Value = item
Next
End Sub
getFolderOrFile çağrısı, bir dosya listesini veya bir klasör listesini listede depolayacaktır. Uygulama örneği False olduğundan klasörlerin listesi saklanır.
For deyimindeki "TODO" bölümünde yapmak istediğiniz işlemi açıklayın. ITEM bir String değişkeni olarak ele alınabilir.
Referans kaynağı, elde edilen listenin Excel'de A1 olarak ayarlanması işlemidir. (İşlem tekrar tekrar aynı hücrenin üzerine yazar.)
2. Kod Açıklaması.
Bu, sistemin nasıl kullanılacağına ilişkin talimatların sonudur ve ardından kodun bir açıklaması gelir.
Ayrıntılar kodda görülebilir, ancak kilit nokta getFolderOrFile yönteminde getFolderOrFile'a yapılan diğer çağrıdır.
Klasörlerin aranması sürecinde, tüm klasörlerin aranması için bir mekanizma olan klasörlerin aranması süreci çağrılarak işlem daha da tekrarlanır.
Kendi yöntemini çağırarak, klasör bulunduğu sürece tüm klasörleri arayarak kendi yöntemini tekrar tekrar çağırır.
3. özet
VBA (Excel makroları) kullanarak alt klasörler de dahil olmak üzere dosyaların ve klasörlerin listesini nasıl alacağınız konusunda yardıma ihtiyacınız varsa, lütfen bu bölüme bakın.
Sonuna kadar izlediğiniz için teşekkür ederiz.
■INFORMATION
BİLGİ üst sayfasına gitmek için lütfen buraya tıklayınız.
■PROFILE
Profil için lütfen buraya tıklayınız.
■İletişim bilgileri.
Makaleyle ilgili sorularınız için lütfen bizimle buradan iletişime geçin.