Как да получите списък с файлове, включително подпапки, и списък с папки с помощта на VBA (макрос на Excel).


Дата на публикуване:12 юли 2022 г.



INFOMARTION > Как да получите списък с файлове, включително подпапки, и списък с папки с помощта на VBA (макрос на Excel).

Преглед.

Бих искал да опиша как да получа списък с файлове и списък с папки, включително подпапки, с помощта на VBA (макрос на Excel). Статията е предназначена за хора, които искат да програмират следните задачи

  • Искам да получа списък на всички файлове или папки в дадена папка с пълните им пътища.
  • Искате да извършите обработка в цикъл за файлове или папки в дадена папка.

Съдържание

  1. Метод на програмиране
  2. Код Описание.
  3. резюме

1. Метод на програмиране

По-долу са дадени референтни примери за програмиране.

Тъй като тя е създадена във Function, бих искал да я копирам така, както е, а извикванията на методите да се извършват от 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

За да го използвате, подайте следните аргументи.

  • filePath・・・директория. Пример.)C:\Users\user\Desktop\test
  • kind・・・Предайте true, false. Ако е True, връща списък с файлове. Ако е false, връща списък с папки.
  • list・・・Колекцията се използва за съхраняване на резултатите. По-долу е даден пример за изпълнение.

По-долу е показан пример за изпълнение на действителното извикване на функция.

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 ще съхрани списък от файлове или списък от папки в списъка. Примерът за изпълнение е False, така че списъкът с папки се съхранява.

Опишете процеса, който искате да извършите, в раздела "TODO" в командата For. ITEM може да се разглежда като променлива String.

Референтният източник е процесът на задаване на придобития списък към A1 в Excel. (Процесът многократно презаписва една и съща клетка.)

2. Код Описание.

Това е краят на инструкциите за използване на системата, последвани от обяснение на кода.

Подробностите могат да се видят в кода, но ключовият момент е допълнителното извикване на getFolderOrFile в метода getFolderOrFile.

В процеса на търсене на папки процесът се повтаря допълнително чрез извикване на процеса на търсене на папки, който е механизъм за търсене на всички папки.

Чрез извикване на собствения си метод той многократно извиква собствения си метод, докато папката е намерена, като претърсва всички папки.

3. резюме

Ако имате нужда от помощ за получаване на списък с файлове и списък с папки, включително подпапки, с помощта на VBA (макроси на Excel), вижте този раздел.

Благодарим ви, че гледахте до края.