Parcourir en boucle les fichiers d'un dossier à l'aide de Dir
Effectuer un traitement sur les fichiers d'un dossier
Le code ci-dessous montre comment traiter les fichiers d'un dossier. FileSpec est le filtre que vous pouvez adapter pour récupérer uniquement les fichiers dont le nom suit un certain modèle. dont le nom suit un certain modèle, par exemple *.xslx pour obtenir tous les fichiers Excel avec l'extension xslx.
Si vous regardez le code, vous verrez que seul le premier Dir a l'argument FileSpec. Ce premier appel renvoie le premier fichier. Les appels suivants, à l'intérieur de la boucle, récupèrent des noms de fichiers supplémentaires, jusqu'à ce qu'une chaîne vide soit renvoyée, ce qui signifie qu'il n'y a plus de fichiers à traiter.
Remarque : une autre façon d'inspecter le dossier consiste à utiliser File System Object, qui est flexible. Les avantages de l'utilisation de Dir sont les suivants : 1. il s'agit d'une méthode native dans VBA, vous n'avez donc pas besoin de faire référence à la bibliothèque FSO, 2. Dir est rapide.
Dim strFileName As String
'TODO: Specify path and file spec
Dim strFolder As String: strFolder = "C:\temp\"
Dim strFileSpec As String: strFileSpec = strFolder & "*.*"
strFileName = Dir(strFileSpec)
Do While Len(strFileName) > 0
'TODO: replace Debug.Print by the process you want to do on the file
'Dim strFilePath As String: strFilePath = strFolder & strFileName
Debug.Print strFileName
strFileName = Dir
Loop
Créer un tableau de noms de fichiers pour un dossier donné
Dans le code ci-dessous, les noms de fichiers sont stockés dans un tableau. Cela permet de séparer l'activité spécifique de traitement de l'activité de recherche des fichiers à traiter à l'aide de Dir.
Dim strFileName As String
'TODO: Specify path and file spec
Dim strFolder As String: strFolder = "C:\temp\"
Dim strFileSpec As String: strFileSpec = strFolder & "*.*"
Dim FileList() As String
Dim intFoundFiles As Integer
strFileName = Dir(strFileSpec)
Do While Len(strFileName) > 0
ReDim Preserve FileList(intFoundFiles)
FileList(intFoundFiles) = strFileName
intFoundFiles = intFoundFiles + 1
strFileName = Dir
Loop
L'image ci-dessous montre la partie du menu Code VBA (téléchargement) qui permet d'insérer le fragment de code souhaité.
