Att veta hur man extrahera Excel-filer från flera mappar med Visual Basic for Applications ( VBA ) kan spara tid när du behöver söka igenom datorn efter Excel-filer för att lagra dem i en mapp . VBA kan användas i Microsoft Office-program som Excel för att automatisera rutinuppgifter såsom att söka efter filer i mappar . Det bästa sättet att söka efter filer i flera mappar är att använda rekursiv programmering . Rekursiv programmering används när du behöver en funktion för att kalla sig inifrån funktionen . Saker du behöver
Microsoft Office
Visa fler instruktioner
1
Launch Microsoft Office Excel , klicka på " Developer " och klicka på " Visual Basic " för att starta VB Editor . Klicka på " Infoga " -menyn och klicka på " modul " för att infoga en ny kodmodul
2
Skriv följande för att skapa en ny sub - förfarandet : .
Dim colFiles As New Collection Addera 3
Kopiera och klistra in följande för att skapa dina variabler :
Dim extractPath As String
Dim filnamn As String
Dim pos As Integer
4
Ange sökvägen där du vill kopiera Excel hittade filerna :
extractPath = " C : \\ Temp \\ "
5
Lägg till följande kod för att anropa funktionen som hittar Excel-filer för extraktion :
RecursiveDir colFiles , " F : \\ moreExcelFiles \\ " , " . * xlsx " , Sant
6
Lägg till följande kod för att kopiera filer som hittas på vägen som definieras i Steg 3 :
Dim vFile As Variant
för varje vFile i colFiles
pos = InStrRev ( vFile , " \\ " , , vbTextCompare ) katalog
filename = Höger ( vFile , Len ( vFile ) - pos ) katalog
FileCopy vFile , extractPath & fileName
Nästa vFile
End sub
7
Definiera " RecursiveDir " -funktionen för att söka de mappar och undermappar för Excel-filer :
Public Function RecursiveDir ( colFiles som Collection , _
strFolder As String , _
strFileSpec As String , _
bIncludeSubfolders As Boolean ) katalog
Dim strTemp As String
Dim colFolders Som New Collection
Dim vFolderName As Variant
strFolder = TrailingSlash ( strFolder ) katalog
strTemp = Dir ( strFolder & strFileSpec ) katalog
Do While strTemp < > ; vbNullString
colFiles.Add strFolder & strTemp
strTemp = Dir
Loop
p Om bIncludeSubfolders Sedan
strTemp = Dir ( strFolder , vbDirectory ) katalog
Do While strTemp < > vbNullString
p Om ( strTemp < > " . " ) Och ( strTemp < > " .. " ) Sen
p Om ( GetAttr ( strFolder & strTemp ) och vbDirectory ) < > 0 Then
colFolders.Add strTemp
End If
End If
strTemp = Dir
Loop
För varje vFolderName I colFolders
Call RecursiveDir ( colFiles , strFolder & vFolderName , strFileSpec , Sant ) katalog
Nästa vFolderName
End If
End Function
8
Skapa följande funktion för att lägga till eller ta bort " \\ " från mappsökvägar :
Public funktion TrailingSlash ( strFolder As String ) As String
If Len ( strFolder ) > 0 Then
p Om Right ( strFolder , 1 ) = " \\ " Då
TrailingSlash = strFolder
Else
TrailingSlash = strFolder & " \\ "
End If
End If
End Function
9
klicka i " extractExcelFiles " sub - proceduren och klicka på " F5 " för att köra programmet .