Kā iegūt failu sarakstu, ieskaitot apakšmapes, un mapju sarakstu, izmantojot VBA (Excel makro).


Publikācijas datums:2022. gada 12. jūlijs.



INFOMARTION > Kā iegūt failu sarakstu, ieskaitot apakšmapes, un mapju sarakstu, izmantojot VBA (Excel makro).

Pārskats.

Vēlos aprakstīt, kā, izmantojot VBA (Excel makro), iegūt failu sarakstu un mapju sarakstu, tostarp apakšmapes. Šis raksts ir paredzēts cilvēkiem, kuri vēlas ieprogrammēt šādus uzdevumus.

  • Es gribu iegūt sarakstu ar visiem failiem vai mapēm, kas atrodas mapē, norādot to pilnos ceļus.
  • Failu vai mapju, kas atrodas mapē, apstrādi vēlaties veikt cilpveidā.

Satura rādītājs

  1. Programmēšanas metode
  2. Kods Apraksts.
  3. kopsavilkums

1. Programmēšanas metode

Tālāk ir sniegti atsauces piemēri par programmēšanu.

Tā kā tas ir izveidots funkcijā Function, es vēlētos, lai tas tiktu pārkopēts, kā tas ir, un metodes izsaukumi tiktu veikti no Sub.

'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

Lai to izmantotu, kā argumentus norādiet.

  • filePath・・・katalogs. Piemērs.)C:\Users\user\Desktop\test
  • kind・・・Pass true, false. Ja True, tiek atgriezts failu saraksts. Ja false, tiek atgriezts mapju saraksts.
  • list・・・Kolekcija tiek izmantota rezultātu glabāšanai. Tālāk ir sniegts implementācijas piemērs.

Tālāk ir parādīts faktiskā funkcijas izsaukuma implementācijas piemērs.

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

Izsaucot getFolderOrFile, failu saraksts vai mapju saraksts tiks saglabāts sarakstā. Īstenošanas piemērs ir False, tāpēc mapju saraksts tiek saglabāts.

Aprakstiet procesu, ko vēlaties veikt, For paziņojuma sadaļā "TODO". ITEM var uzskatīt par virknes mainīgo.

Atsauces avots ir iegūto sarakstu iestatīšanas process A1 programmā Excel. (Process atkārtoti pārraksta vienu un to pašu šūnu.)

2. Kods Apraksts.

Tas ir sistēmas lietošanas pamācības beigas, kam seko koda skaidrojums.

Sīkāka informācija ir redzama kodā, bet galvenais ir turpmākais izsaukums getFolderOrFile metodē getFolderOrFile.

Mapeņu meklēšanas procesā process tālāk tiek atkārtots, izsaucot mapju meklēšanas procesu, kas ir visu mapju meklēšanas mehānisms.

Izsaucot savu metodi, tā atkārtoti izsauc savu metodi, kamēr vien mape ir atrasta, meklējot visas mapes.

3. kopsavilkums

Ja nepieciešama palīdzība, kā iegūt failu un mapju sarakstu, tostarp apakšmapes, izmantojot VBA (Excel makrus), skatiet šo sadaļu.

Paldies, ka noskatījāties līdz beigām.