Comment obtenir une liste de fichiers, y compris les sous-dossiers, et une liste de dossiers à l'aide de VBA (macro Excel).
Date de publication:12 juillet 2022.
INFOMARTION > Comment obtenir une liste de fichiers, y compris les sous-dossiers, et une liste de dossiers à l'aide de VBA (macro Excel).
Vue d'ensemble.
Je voudrais décrire comment obtenir une liste de fichiers et une liste de dossiers, y compris les sous-dossiers, en utilisant VBA (macro Excel). Cet article est destiné aux personnes qui souhaitent programmer les tâches suivantes
- Je veux obtenir une liste de tous les fichiers ou dossiers sous un dossier avec leurs chemins complets.
- Vous voulez effectuer un traitement en boucle pour les fichiers ou les dossiers sous un dossier.
Table des matières
1. Méthode de programmation
Des exemples de référence de la programmation sont donnés ci-dessous.
Puisqu'il est créé dans Function, je voudrais qu'il soit copié tel quel et que les appels de méthode soient effectués à partir de 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
Pour l'utiliser, passez les éléments suivants comme arguments.
- filePath・・・répertoire. Exemple.)C:\Users\user\Desktop\test
- kind・・・Passez vrai, faux. Si True, renvoie une liste de fichiers. Si false, renvoie une liste de dossiers.
- list・・・La collection est utilisée pour stocker les résultats. Un exemple de mise en œuvre est donné ci-dessous.
Un exemple de mise en œuvre d'un appel de fonction réel est présenté ci-dessous.
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
L'appel à getFolderOrFile stocke une liste de fichiers ou une liste de dossiers dans la liste. L'exemple d'implémentation est Faux, donc la liste des dossiers est stockée.
Décrivez le processus que vous souhaitez effectuer dans la section "TODO" de l'instruction "For". ITEM peut être traité comme une variable de type String.
La source de référence est le processus de mise en place de la liste acquise à A1 dans Excel. (Le processus écrase de façon répétée la même cellule.)
2. Description du code.
C'est la fin des instructions sur la façon d'utiliser le système, suivie d'une explication du code.
Les détails peuvent être vus dans le code, mais le point clé est l'appel supplémentaire à getFolderOrFile dans la méthode getFolderOrFile.
Dans le processus de recherche de dossiers, le processus est répété en appelant le processus de recherche de dossiers, qui est un mécanisme de recherche de tous les dossiers.
En appelant sa propre méthode, elle le fait de manière répétée tant que le dossier est trouvé, en cherchant dans tous les dossiers.
3. résumé
Si vous avez besoin d'aide pour savoir comment obtenir une liste de fichiers et une liste de dossiers, y compris les sous-dossiers, à l'aide de VBA (macros Excel), veuillez vous reporter à cette section.
Merci d'avoir regardé jusqu'à la fin.
■INFORMATION
Veuillez cliquer ici pour accéder à la page d'accueil d'INFORMATION.
■PROFILE
Veuillez cliquer ici pour un profil.
■Coordonnées de contact.
Pour toute question concernant cet article, veuillez nous contacter ici.