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
  2. Kod Açıklaması.
  3. özet

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.