Weten hoe u Excel- bestanden uit meerdere mappen met behulp van Visual Basic voor toepassingen ( VBA ) kunt u tijd besparen wanneer u nodig hebt om uw computer te zoeken naar Excel-bestanden op te slaan in een map . VBA kan worden gebruikt in Microsoft Office -toepassingen zoals Excel om routinetaken zoals het zoeken naar bestanden in mappen te automatiseren . De beste manier om te zoeken naar bestanden in meerdere mappen is met behulp van recursieve programmering . Recursieve programmering wordt gebruikt wanneer u een functie nodig hebt om zelf te bellen vanuit de functie . Wat je nodig hebt Microsoft Office Toon Meer Aanwijzingen 1 Lancering Microsoft Office Excel , klikt u op "Ontwikkelaar , " en klik op " Visual Basic " om de VB editor te starten . Klik op het menu "Invoegen " en klik op "Module " om een nieuwe code -module plaatsen Type 2 het volgende om een nieuwe sub - procedure te maken: . Dim colFiles als Nieuwe Collectie Kopieer 3 en plak de volgende om uw variabelen te maken: Dim extractPath als Koord Dim fileName als Koord Dim pos As Integer 4 Definieer het pad waar u de Excel-bestanden gevonden kopiëren : extractPath = " C : \\ Temp \\ " 5 Voeg de volgende code aan de functie die de Excel-bestanden te vinden voor extractie bel : RecursiveDir colFiles , " F : \\ moreExcelFiles \\ " , " . * xlsx " , True 6 de volgende code toevoegen aan de bestanden gevonden om het pad gedefinieerd in stap 3 te kopiëren : Dim vFile als Variant voor Elke vFile in colFiles pos = InStrRev ( vFile , " \\ " , , vbTextCompare ) fileName = Right ( vFile , Len ( vFile ) - pos ) op Twitter FileCopy vFile , extractPath & fileName Volgende vFile < br > End sub 7 de " RecursiveDir " functie om de mappen en submappen voor Excel -bestanden zoeken Define : Overheidsfunctie RecursiveDir ( colFiles Zoals Collection , _ < br strFolder > als Koord , _ strFileSpec als Koord , _ bIncludeSubfolders zoals Van Boole ) Dim strTemp als Koord Dim colFolders als nieuwe Collectie Dim vFolderName als Variant strFolder = TrailingSlash ( strFolder ) op strTemp = Dir ( strFolder & strFileSpec ) op Twitter Doe terwijl strTemp < > ; vbNullString colFiles.Add strFolder & strTemp strTemp Loop = Dir Als bIncludeSubfolders dan strTemp = Dir ( strFolder , vbDirectory ) op Doe terwijl strTemp < > vbNullString Als ( strTemp < > " . " ) en ( strTemp < > " .. " ) dan Als ( GetAttr ( strFolder & strTemp ) en vbDirectory ) < > 0 Then colFolders.Add strTemp End Als End Als strTemp = Dir Loop voor Elke vFolderName In colFolders Call RecursiveDir ( colFiles , strFolder & vFolderName , strFileSpec , True ) Volgende vFolderName End Als End Function 8 Maak de volgende functie om de " \\ " uit de map paden toe te voegen of te verwijderen : Public functie TrailingSlash ( strFolder als Koord ) als Koord Als Len ( strFolder ) > 0 Then Als Rechts ( strFolder , 1 ) = " \\ " dan TrailingSlash = TrailingSlash = strFolder & " \\ " End Als End Als End Function < br strFolder Else > klik op 9 binnen in de " extractExcelFiles " sub - procedure en klik op " F5 " om het programma uit te voeren .
|