Hogyan kaphatunk egy listát a fájlokról, beleértve az almappákat és a mappák listáját VBA (Excel makró) segítségével.


Megjelenés dátuma:2022. július 12.



INFOMARTION > Hogyan kaphatunk egy listát a fájlokról, beleértve az almappákat és a mappák listáját VBA (Excel makró) segítségével.

Áttekintés.

Szeretném leírni, hogyan lehet a fájlok és a mappák listáját, beleértve az almappákat is, VBA (Excel makró) segítségével megszerezni. A cikk azoknak szól, akik a következő feladatokat szeretnék programozni

  • Egy mappa alatt található összes fájl vagy mappa listáját szeretném megkapni a teljes elérési útvonallal együtt.
  • Egy mappa alatti fájlok vagy mappák feldolgozását egy ciklusban szeretné elvégezni.

Tartalomjegyzék

  1. Programozási módszer
  2. Kód Leírás.
  3. összefoglaló

1. Programozási módszer

A programozásra vonatkozó referenciapéldák az alábbiakban találhatók.

Mivel a Function-ben jön létre, szeretném, ha úgy másolnák át, ahogy van, és a metódushívások a Sub-ból történnének.

'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

Használatához a következőket adja meg argumentumként.

  • filePath・・・könyvtár. Példa.)C:\Users\user\Desktop\test
  • kind・・・Pass true, false. Ha True, a fájlok listáját adja vissza. Ha false, a mappák listáját adja vissza.
  • list・・・A gyűjtemény az eredmények tárolására szolgál. Az alábbiakban egy példát mutatunk be.

Az alábbiakban egy tényleges függvényhívás példaimplementációja látható.

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

A getFolderOrFile meghívása a fájlok vagy mappák listáját tárolja a listában. A megvalósítási példa False, így a mappák listája tárolásra kerül.

A For utasítás "TODO" szakaszában írja le a végrehajtandó folyamatot. ITEM string változóként kezelhető.

A referenciaforrás a megszerzett lista A1-re történő beállításának folyamata az Excelben. (A folyamat ismételten felülírja ugyanazt a cellát.)

2. Kód Leírás.

Itt ér véget a rendszer használatára vonatkozó utasítás, amelyet a kód magyarázata követ.

A részletek a kódban láthatók, de a kulcspont a getFolderOrFile metódusban a getFolderOrFile további hívása.

A mappák keresése során a folyamat tovább ismétlődik a mappák keresése folyamatának meghívásával, amely az összes mappa keresésének mechanizmusa.

A saját metódus meghívásával ismételten meghívja a saját metódusát, amíg a mappát megtalálja, az összes mappát átkutatva.

3. összefoglaló

Ha segítségre van szüksége a fájlok és mappák listájának - beleértve az almappákat is - VBA (Excel-makrók) használatával történő lekérdezéséhez, kérjük, olvassa el ezt a részt.

Köszönjük, hogy a végéig figyeltek.