Vide, hvordan man udtrække Excel-filer fra flere mapper ved hjælp af Visual Basic for Applications ( VBA ) kan spare dig tid, når du har brug for at søge på din computer for Excel-filer til at gemme dem i en mappe. VBA kan bruges i Microsoft Office-programmer som Excel til at automatisere rutineopgaver såsom at søge efter filer i mapper . Den bedste måde at søge efter filer i flere mapper er ved hjælp af rekursive programmering. Rekursiv programmering bruges, når du har brug for en funktion til at kalde sig inde fra funktionen . Ting du skal
Microsoft Office
Vis Flere Instruktioner
1
Launch Microsoft Office Excel , klik på " Udvikler ", og klik på " Visual Basic " for at starte VB Editor . Klik på " Indsæt" menuen og klikke på " Modul " for at indsætte en ny kode modul
2
Skriv følgende for at oprette en ny sub- procedure : .
Dim colFiles Som ny kollektion
3
Kopier og indsæt følgende for at oprette dine variabler : Hej
Dim extractPath As String
Dim filnavn som String
Dim pos As Integer
4
Definer den sti, hvor du ønsker at kopiere Excel fundne filer : Hej
extractPath = " C: \\ Temp \\ "
5 < p > Føj følgende kode til at kalde den funktion, der vil finde den Excel-filer til ekstraktion :
RecursiveDir colFiles , "F : \\ moreExcelFiles \\ ", " . * xlsx " Ægte
6 < p> Føj følgende kode til at kopiere filer, der findes til den sti, er defineret i Trin 3 : Hej
Dim vFile Som Variant
for Each vFile i colFiles
pos = InStrRev ( vFile , "\\ " , vbTextCompare )
filename = Right ( vFile , Len ( vFile ) - POS)
FileCopy vFile , extractPath & fileName
Næste vFile < br >
End sub
7
Definer " RecursiveDir "-funktionen til at søge i mapper og undermapper for Excel-filer : Hej
Public Function RecursiveDir ( colFiles Som Collection, _ < br >
strFolder As String , _
strFileSpec As String , _
bIncludeSubfolders Som Boolean )
Dim strTemp As String
Dim colFolders Som ny samling
Dim vFolderName Som Variant
strFolder = TrailingSlash ( strFolder )
strTemp = Dir ( strFolder & strFileSpec )
Do While strTemp < > ; vbNullString
colFiles.Add strFolder & strTemp
strTemp = Dir
Loop
p Hvis bIncludeSubfolders Så
strTemp = Dir ( strFolder , vbDirectory )
Do While strTemp < > vbNullString
p Hvis ( strTemp < > ".") Og ( strTemp < > " ..") Så
Hvis ( GetAttr ( strFolder & strTemp ) og vbDirectory ) < > 0 Then
colFolders.Add strTemp
End If
End If
< p> strTemp = Dir
Loop
For Each vFolderName I colFolders
Ring RecursiveDir ( colFiles , strFolder & vFolderName , strFileSpec , sand)
Næste vFolderName
End If
End Function
8
Lav følgende funktion til at tilføje eller fjerne " \\ " fra mappestier : Hej
Public funktion TrailingSlash ( strFolder As String ) As String
p Hvis Len ( strFolder ) > 0 Then
p Hvis Right ( strFolder , 1) = "\\ " Så
TrailingSlash = strFolder
Else
TrailingSlash = strFolder & " \\ "
End If
End If
End Function
< br > 9
klik inde i " extractExcelFiles " sub- proceduren og klik på " F5 " for at køre programmet.