如何使用VBA(Excel宏)获得文件列表,包括子文件夹,以及文件夹的列表。
出版日期:2022年7月12日。
INFOMARTION > 如何使用VBA(Excel宏)获得文件列表,包括子文件夹,以及文件夹的列表。
概述。
我想描述一下如何使用VBA(Excel宏)获得一个文件列表和一个文件夹列表,包括子文件夹。 这篇文章的目的是为那些想要编排以下任务的人准备的
- 我想获得一个文件夹下的所有文件或文件夹的列表,以及它们的完整路径。
- 你想对一个文件夹下的文件或文件夹进行循环处理。
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・・・传真,传假。 如果为真,则返回一个文件列表。 如果是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将在列表中存储一个文件或一个文件夹列表。 实施例是假的,所以文件夹的列表被存储。
在For语句的 "TODO "部分描述你想做的过程。 ITEM可以被视为一个字符串变量。
参考来源是在Excel中把获得的列表设置为A1的过程。 (这个过程会重复覆盖同一个单元。)
2. 代码描述。
关于如何使用该系统的说明到此为止,接下来是对代码的解释。
细节可以在代码中看到,但关键点在于getFolderOrFile方法中对getFolderOrFile的进一步调用。
在搜索文件夹的过程中,通过调用搜索文件夹的过程,进一步重复这一过程,这是一种搜索所有文件夹的机制。
通过调用自己的方法,只要找到文件夹,它就反复调用自己的方法,搜索所有的文件夹。
3. 摘要
如果你需要帮助了解如何使用VBA(Excel宏)获得文件列表和文件夹列表,包括子文件夹,请参考本节。
谢谢你一直看到最后。