Как получить список файлов, включая вложенные папки, и список папок с помощью 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), обратитесь к этому разделу.

Спасибо, что досмотрели до конца.