Sådan Uddrag Excel filer fra flere mapper med VBA

March 3

Sådan Uddrag Excel filer fra flere mapper med VBA


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 rekursiv programmering. Rekursiv programmering bruges, når du har brug for en funktion til at kalde sig inde fra funktionen.

Instruktioner

1 Start Microsoft Office Excel, klik på "Udvikler", og klik på "Visual Basic" for at starte Visual Basic. Klik på "Indsæt" menuen og klik på "Modul" for at indsætte en ny kode modul.

2 Skriv følgende for at oprette en ny sub-procedure:

Dim colFiles As New Collection

3 Kopier og indsæt følgende for at oprette dine variabler:

Dim extractPath As String

Dim filnavn som String

Dim pos As Integer

4 Definer den sti, hvor du vil kopiere Excel-filer fundet:

extractPath = "C:\Temp\"

5 Føj følgende kode til at kalde den funktion, der vil finde Excel-filer til udvinding:

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

6 Føj følgende kode til at kopiere de filer, der findes til den sti defineret i trin 3:

Dim vFile As Variant

For hvert vFile I colFiles

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

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

FileCopy vFile, extractPath & fileName

Næste vFile

End sub

7 Definer "RecursiveDir" funktion til at søge i mapper og undermapper til Excel-filer:

Offentlig Funktion RecursiveDir (colFiles As Collection, _

strFolder As String, _

strFileSpec As String, _

bIncludeSubfolders As Boolean)

Dim strTemp As String

Dim colFolders As New Collection

Dim vFolderName Som Variant

strFolder = TrailingSlash (strFolder)

strTemp = Dir(strFolder & strFileSpec)

Gør Mens strTemp & lt;> vbNullString

colFiles.Add strFolder & strTemp

strTemp = Dir

Loop

Hvis bIncludeSubfolders Then

strTemp = Dir (strFolder, vbDirectory)

Gør Mens strTemp & lt;> vbNullString

Hvis (strTemp & lt;> ".") Og (strTemp & lt;> "..") Derefter

Hvis (GetAttr (strFolder & strTemp) Og vbDirectory) & lt;> 0 Derefter

colFolders.Add strTemp

End If

End If

strTemp = Dir

Loop

For hvert vFolderName I colFolders

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

Næste vFolderName

End If

End Function

8 Opret følgende funktion til at tilføje eller fjerne "\" fra mappestier:

Offentlig Funktion TrailingSlash (strFolder As String) As String

If Len(strFolder) > 0 Then

Hvis Right (strFolder, 1) = "\" Så

TrailingSlash = strFolder

Andet

TrailingSlash = strFolder & "\"

End If

End If

End Function

9 Klik inde i "extractExcelFiles" sub-procedure, og klik på "F5" for at køre programmet.