Condexatedenbay.com


Comment extraire des fichiers Excel de plusieurs dossiers avec VBA



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

Instructions

• Lancement de Microsoft Office Excel, cliquez sur "Développeur" et cliquer sur « Visual Basic » pour lancer l'éditeur VB. Cliquez sur le menu « Insérer », puis cliquez sur « Module » pour insérer un nouveau module de code.

• Tapez la commande suivante pour créer une nouvelle procédure subsidiaire : col Dim fichiers As nouvelle Collection

• Copiez et collez la commande suivante pour créer vos variables : extrait de Dim Path As String Dim filename As String Dim position As Integer

• Définir le chemin d'accès où vous souhaitez copier les fichiers Excel : extraire le chemin d'accès = « C:\Temp\ »

• Ajoutez le code suivant pour appeler la fonction qui trouve les fichiers Excel pour l'extraction : RecursiveDir col fichiers, « F:\moreExcelFiles\ », « *.xlsx », True

• Ajoutez le code suivant pour copier les fichiers trouvés dans le chemin défini à l'étape 3: Dim vFile As Variant For Each vFile In col fichiers pos = InStrRev (vFile, "\", vbTextCompare dans) fileName = vFile Right(vFile, Len(vFile)-pos) FileCopy, extraire le chemin d'accès et nom de fichier vFile Next End sub

• Définition de la fonction « RecursiveDir » pour rechercher les dossiers et sous-dossiers pour les fichiers Excel : Public Function RecursiveDir(col Files As Collection, _ strFolder As String, _ strFileSpec As String, _ bIncludeSubfolders As Boolean) Dim strTemp As String Dim col dossiers As New Collection Dim vFolderName As Variant strFolder = TrailingSlash(strFolder) strTemp = Dir(strFolder & strFileSpec) Do While strTemp <> vbNullString colFiles.Add strFolder & strTemp strTemp = Dir Loop si bIncludeSubfolders puis strTemp = Dir (strFolder vbDirectory) While strTemp <> vbNullString If (strTemp <> «. ») Et (strTemp <> "..") Alors si (GetAttr(strFolder & strTemp) et vbDirectory) <> 0 puis colFolders.Add strTemp End If End If strTemp = Dir Loop For Each vFolderName au col vFolderName dossiers appeler RecursiveDir(col Files, strFolder & vFolderName, strFileSpec, True) Next End If End Function

• Créez la fonction suivante pour ajouter ou retirer le « \ » les chemins de dossier : Public Function TrailingSlash(strFolder As String) As String si Len(strFolder) > 0 alors si Right(strFolder, 1) = "\" Then TrailingSlash = strFolder Else TrailingSlash = strFolder & ""\"" fin si End If End Function

• Cliquez à l'intérieur de la sous-procédure « extractExcelFiles » et cliquez sur "F5" pour exécuter le programme.