Comment faire pour extraire des fichiers Excel à partir de dossiers multiples Avec VBA

Comment faire pour extraire des fichiers Excel à partir de dossiers multiples Avec VBA


Sachant comment extraire des fichiers Excel à partir de plusieurs dossiers à l'aide de Visual Basic pour applications (VBA) peut vous faire économiser du temps lorsque vous devez rechercher sur votre ordinateur pour les fichiers Excel pour les stocker dans un dossier. VBA peut être utilisé dans des applications Microsoft Office tels que Excel pour automatiser les tâches de routine telles que la recherche de fichiers dans des dossiers. La meilleure façon de rechercher des fichiers dans plusieurs dossiers est en utilisant la programmation récursive. Programmation récursive est utilisé lorsque vous avez besoin d'une fonction pour appeler lui-même à partir de la fonction.

Instructions

1 Lancez Microsoft Office Excel, cliquez sur "Developer" et cliquez sur "Visual Basic" pour lancer l'éditeur de VB. Cliquez sur le menu "Insertion" et cliquez sur "Module" pour insérer un nouveau module de code.

2 Tapez la commande suivante pour créer un nouveau sous-procédure:

colFiles Dim As New Collection

3 Copiez et collez le texte suivant pour créer vos variables:

Dim extractPath As String

Dim As String fileName

pos Dim As Integer

4 Définir le chemin où vous souhaitez copier les fichiers Excel trouvés:

extractPath = "C:\Temp\"

5 Ajoutez le code suivant pour appeler la fonction qui va trouver les fichiers Excel pour l'extraction:

RecursiveDir colFiles, "F:\moreExcelFiles\", "*.xlsx", True

6 Ajoutez le code suivant pour copier les fichiers trouvés sur le chemin défini à l'étape 3:

Dim vFile As Variant

Pour chaque vFile Dans colFiles

pos = InStrRev (vFile, "\", vbTextCompare)

fileName = Droite (vFile, Len (vFile) - pos)

FileCopy vFile, extractPath & fileName

Suivant vFile

End sub

7 Définir la fonction "RecursiveDir" pour rechercher les dossiers et sous-dossiers pour les fichiers Excel:

Fonction publique RecursiveDir (colFiles Comme Collection, _

strFolder As String, _

strFileSpec As String, _

bIncludeSubfolders As Boolean)

Dim strTemp As String

colFolders Dim As New Collection

Dim vFolderName As Variant

strFolder = TrailingSlash (strFolder)

strTemp = Dir(strFolder & strFileSpec)

Do While strTemp & lt;> vbNullString

colFiles.Add strFolder & strTemp

strTemp = Dir

Boucle

Si bIncludeSubfolders Puis

strTemp = Dir (strFolder, vbDirectory)

Do While strTemp & lt;> vbNullString

Si (strTemp & lt;> ".") Et (strTemp & lt;> "..") Ensuite,

Si (GetAttr (strFolder & strTemp) Et vbDirectory) & lt;> 0 Then

colFolders.Add strTemp

Fin si

Fin si

strTemp = Dir

Boucle

Pour chaque vFolderName Dans colFolders

Appelez RecursiveDir (colFiles, strFolder & vFolderName, strFileSpec, True)

Suivant vFolderName

Fin si

End Function

8 Créez la fonction suivante pour ajouter ou supprimer le "\" des chemins de dossier:

Fonction publique TrailingSlash (strFolder As String) As String

If Len(strFolder) > 0 Then

Si Right (strFolder, 1) = "\" Ensuite,

TrailingSlash = strFolder

Autre

TrailingSlash = strFolder & "\"

Fin si

Fin si

End Function

9 Cliquez dans la "extractExcelFiles" sous-procédure et cliquez sur "F5" pour exécuter le programme.