Obtenir la liste des fichiers Excel dans un dossier à l'aide de VBA
J'ai besoin d'obtenir les noms de tous les fichiers Excel dans un dossier et ensuite apporter des modifications pour chaque fichier. J'ai obtenu la "apporter des modifications" de la partie triée. Est-il possible d'obtenir une liste de la .xlsx
fichiers dans un dossier, dire D:\Personal
et de le stocker dans un Tableau de chaînes.
Je puis avoir besoin de parcourir la liste des fichiers et exécuter une macro sur chacun des fichiers que j'ai pensé que je peut faire avec:
Filepath = "D:\Personal\"
For Each i in FileArray
Workbooks.Open(Filepath+i)
Next
J'ai eu un coup d'oeil à cette, cependant, je n'étais pas en mesure d'ouvrir les fichiers en cause sont stockés les noms dans Variant
format.
En bref, comment puis-je utiliser VBA pour obtenir une liste de Excel les noms de fichiers dans un dossier spécifique?
- Vous avez besoin de la liste des fichiers dans un autre endroit? Ou voulez-vous simplement à faire des trucs dans les fichiers sans les énumérer?
- Juste envie de faire des choses dans les fichiers
- C'est le contraire de ce que votre question lectures. Vous voulez les noms des fichiers, de ne pas juste faire des trucs pour les fichiers.
- Ouais, mais si je reçois les noms des fichiers, je peux juste ouvrir à l'aide de Classeurs.Open() donc j'ai juste besoin d'obtenir la liste des noms dans un Tableau de chaînes.
Vous devez vous connecter pour publier un commentaire.
Ok eh bien, ce pourrait travailler pour vous, une fonction qui prend un chemin et retourne un tableau de noms de fichier dans le dossier. Vous pouvez utiliser une instruction if pour obtenir les fichiers excel lorsqu'une boucle dans le tableau.
Ce serait bien si on pouvait juste avoir accès à des fichiers dans les fichiers de l'objet par numéro d'index, mais qui semble être cassé en VBA pour quelque soit la raison (bug?).
For Each i in oFiles Workbook.Open(oFiles(i))
Juste eu à changer que je. Mon mauvais! Merci pour l'aide!Vous pouvez utiliser le haut-Dir de la fonction ou l'objet FileSystemObject.
Fonction Dir: VBA: Fonction Dir
FileSystemObject: VBA: FileSystemObject - les Fichiers de la Collection
Ils ont chacun leurs propres forces et faiblesses.
Fonction Dir
La Fonction Dir est un intégré, léger méthode pour obtenir une liste de fichiers. Les avantages de son utilisation:
Le truc, c'est de comprendre la différence entre un appel avec ou sans paramètre. Voici un exemple très simple à démontrer:
Si vous modifiez tous les fichiers à l'intérieur de la boucle, vous obtiendrez des résultats imprévisibles. Il est préférable de lire tous les noms dans un tableau de chaînes de caractères avant de faire des opérations sur les fichiers. Voici un exemple qui s'appuie sur la précédente. C'est une Fonction qui retourne un Tableau de chaînes:
Objet De Système De Fichiers
L'Objet Système de Fichiers est une bibliothèque pour les opérations d'e /s qui prend en charge un objet-modèle pour la manipulation des fichiers. Pros pour cette approche:
Vous pouvez ajouter une référence à "Windows Script Host Object Model" (ou "Windows Scripting Runtime") et de déclarer vos objets comme:
Si vous ne voulez pas intellisense vous pouvez faire comme si, sans définition d'une référence:
&
pour concaténer des chaînes en VBA? comme dansFilepath & i
ou mêmeFilepath & CStr(i)
.filepath&i
&
pourrait être préférable ... msdn.microsoft.com/en-us/library/te2585xw.aspxSi tout ce que vous voulez, c'est le nom du fichier sans l'extension de fichier
À la sortie de la feuille de calcul excel
Principalement basé sur la technique détaillé ici: https://wordmvp.com/FAQs/MacrosVBA/ReadFilesIntoArray.htm
Concernant la upvoted réponse, j'ai bien aimé sauf que si le "listfiles" tableau est utilisé dans une formule matricielle {CSE}, la liste des valeurs de tous dans une rangée horizontale. Pour les faire venir dans une colonne verticale, j'ai simplement fait le tableau à deux dimensions comme suit: