Les fichiers dans un répertoire dans Excel VBA
Ci-dessous, nous examinerons un programme dans Excel VBA qui boucle dans tous les classeurs fermés et des feuilles de calcul dans un répertoire, et affiche tous les noms.
Télécharger Book1.xlsx, Book2.xlsx, Book3.xlsx, Book4.xlsx et Book5.xlsx et les ajouter à « C: \ test \ »
Situation:
Ajoutez les lignes de code suivantes au bouton de commande:
-
Tout d’abord, nous déclarons deux variables de type String, un objet feuille de calcul et deux variables de type entier.
Dim directory As String, fileName As String, sheet As Worksheet, i As Integer, j As Integer
-
Pour éviter le scintillement de l’écran, désactiver la mise à jour de l’écran.
Application.ScreenUpdating = False
-
Initialiser le répertoire variable. Nous utilisons la fonction Dir pour trouver la première .xl ?? fichier stocké dans ce répertoire.
directory = "c:\test\" fileName = Dir(directory & ".xl??")
Note: (?) La fonction Dir prend en charge l’utilisation de plusieurs caractères (*) et le caractère unique des caractères génériques pour rechercher tous les différents types de fichiers Excel.
-
La variable fileName détient maintenant le nom du premier fichier Excel dans le répertoire. Ajouter une boucle Do While.
Do While fileName <> "" Loop
Ajouter les lignes de code suivants (en 5, 6, 7, 8 et 9) de la boucle.
-
Initialiser les variables de type entier et ajouter le nom du fichier Excel à la première colonne de la ligne i.
i = i + 1 j = 2 Cells(i, 1) = fileName
-
Il n’y a aucun moyen simple d’extraire des données (ou les noms de feuilles) à partir de fichiers Excel fermés. Par conséquent, nous ouvrons le fichier Excel.
Workbooks.Open (directory & fileName)
-
Ajouter tous les noms de feuille du fichier Excel pour les autres colonnes de la ligne i.
For Each sheet In Workbooks(fileName).Worksheets Workbooks("files-in-a-directory.xlsm").Worksheets(1).Cells(i, j).Value = sheet.Name j = j + 1 Next sheet
-
Fermez le fichier Excel.
Workbooks(fileName).Close
-
La fonction Dir est une fonction spéciale. Pour obtenir les autres fichiers Excel, vous pouvez utiliser à nouveau la fonction Dir sans arguments.
fileName = Dir()
Remarque: en l’absence d’autres noms de fichiers correspondent, la fonction Dir renvoie une chaîne de longueur nulle ( « »). Par conséquent, Excel VBA quittera la boucle Do While.
-
Allumez l’écran de mise à jour à nouveau (en dehors de la boucle).
Application.ScreenUpdating = True
-
Tester le programme.
Résultat: