Cómo obtener una lista de archivos, incluyendo subcarpetas, y una lista de carpetas utilizando VBA (macro de Excel).
Fecha de publicación:12 de julio de 2022.
INFOMARTION > Cómo obtener una lista de archivos, incluyendo subcarpetas, y una lista de carpetas utilizando VBA (macro de Excel).
Resumen.
Me gustaría describir cómo obtener una lista de archivos y una lista de carpetas, incluyendo subcarpetas, utilizando VBA (macro de Excel). El artículo está dirigido a personas que quieran programar las siguientes tareas
- Quiero obtener una lista de todos los archivos o carpetas bajo una carpeta con sus rutas completas.
- Desea realizar el procesamiento en un bucle para archivos o carpetas bajo una carpeta.
Índice de contenidos
1. Método de programación
A continuación se ofrecen ejemplos de referencia de programación.
Como está creado en Function, me gustaría que se copiara tal cual y que las llamadas a los métodos se hicieran desde 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
Para utilizarlo, pase lo siguiente como argumentos.
- filePath・・・directorio. Ejemplo.)C:\Users\user\Desktop\test
- kind・・・Pasar verdadero, falso. Si es True, devuelve una lista de archivos. Si es falso, devuelve una lista de carpetas.
- list・・・La colección se utiliza para almacenar los resultados. A continuación se ofrece un ejemplo de aplicación.
A continuación se muestra un ejemplo de implementación de una llamada a una función real.
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
Al llamar a getFolderOrFile se almacenará una lista de archivos o una lista de carpetas en la lista. El ejemplo de implementación es False, por lo que la lista de carpetas se almacena.
Describa el proceso que desea realizar en la sección "TODO" de la sentencia For. ITEM puede ser tratada como una variable String.
La fuente de referencia es el proceso de establecer la lista adquirida en A1 en Excel. (El proceso sobrescribe repetidamente la misma celda.)
2. Descripción del código.
Aquí terminan las instrucciones de uso del sistema, seguidas de una explicación del código.
Los detalles se pueden ver en el código, pero el punto clave es la llamada posterior a getFolderOrFile en el método getFolderOrFile.
En el proceso de búsqueda de carpetas, el proceso se repite llamando al proceso de búsqueda de carpetas, que es un mecanismo de búsqueda de todas las carpetas.
Al llamar a su propio método, llama repetidamente a su propio método mientras se encuentre la carpeta, buscando en todas las carpetas.
3. resumen
Si necesita ayuda sobre cómo obtener una lista de archivos y una lista de carpetas, incluidas las subcarpetas, utilizando VBA (macros de Excel), consulte esta sección.
Gracias por mirar hasta el final.
■INFORMATION
Haga clic aquí para ir a la página superior de INFORMACIÓN.
■PROFILE
Haga clic aquí para ver su perfil.
■Datos de contacto.
Para consultas sobre el artículo, póngase en contacto con nosotros aquí.