Slik kombinerer du flere Excel -filer til en Excel -arbeidsbok

Jeg fikk en telefon fra en venn som ønsket å kombinere flere Excel -filer til en Excel -arbeidsbok. Han hadde mange filer i en mappe, og han ønsket å få alle regnearkene fra alle arbeidsbøkene til en enkelt arbeidsbok.

Selv om dette kan gjøres manuelt, vil det være tidkrevende og utsatt for feil.

Imidlertid kan en enkel VBA -kode gjøre dette på få sekunder.

Kombiner flere Excel -filer til én fil

Her er koden som kan kombinere flere Excel -arbeidsbøker i en spesifisert mappe til en enkelt Excel -arbeidsbok:

Sub ConslidateWorkbooks () 'Opprettet av Sumit Bansal fra https://trumpexcel.com Dim FolderPath As String Dim Filename As String Dim Sheet As Worksheet Application.ScreenUpdating = False FolderPath = Environ ("userprofile") & "DesktopTest" Filname = Dir ( FolderPath & "*.xls*") Do While Filename "" Workbooks.Open Filename: = FolderPath & Filename, ReadOnly: = True For each Sheet In ActiveWorkbook.Sheets Sheet.Copy After: = ThisWorkbook.Sheets (1) Next Sheet Workbooks (Filnavn) .Close Filename = Dir () Loop Application.ScreenUpdating = True End Sub

Hvordan bruke denne koden?

Her er trinnene for å bruke denne koden:

  • Legg alle Excel -filene du vil kombinere i en mappe. I forbindelse med denne opplæringen har jeg opprettet en mappe som heter Test og har seks filer i den (4 Excel -arbeidsbøker og 1 Power Point og Word hver).
  • Åpne en ny Excel -arbeidsbok.
  • Trykk ALT + F11 (eller gå til Utvikler -> Kode -> Visual Basic). Dette åpner Visual Basic Editor.
  • I VB Editor, i Project Editor, høyreklikker du på et av objektene for arbeidsboken og går til Sett inn -> Modul. Dette vil sette inn en modul for arbeidsboken.
  • Dobbeltklikk på modulen. Det åpner kodevinduet til høyre.
  • Kopier og lim inn koden ovenfor i kodevinduet.
  • I koden må du endre følgende kodelinje:
    FolderPath = Environ ("userprofile") & "DesktopTest"

    På denne linjen endrer du delen i doble anførselstegn (markert med oransje) med plasseringen av mappen der du har filene du vil kombinere. I koden som er brukt ovenfor, ligger mappen på skrivebordet. Hvis du har den på et annet sted, spesifiser den stien her.

  • Plasser markøren hvor som helst i koden, og klikk på den grønne avspillingsknappen i verktøylinjen (eller trykk på F5 -tasten).

Dette vil kjøre koden, og alle regnearkene fra alle Excel -filene i mappen vil bli samlet i en enkelt arbeidsbok.

Hvordan fungerer denne koden?

  • Koden bruker DIR -funksjonen for å hente filnavnene fra den angitte mappen.
  • Følgende linje tilordner variabelen ‘Filnavn’ det første excel -filnavnet.
    Filnavn = Dir (FolderPath & “*.xls*”)
  • Deretter brukes Do While -løkken for å kontrollere om alle filene er dekket.
  • I sløyfen "Gjør mens" brukes "For hver" -sløyfe for å kopiere alle regnearkene til arbeidsboken der vi kjører koden.
  • På slutten av Do Loop brukes følgende kodelinje: Filnavn = Dir (). Den tilordner det neste Excel -filnavnet til filnavnvariabelen og sløyfen starter på nytt.
  • Når alle filene er dekket, returnerer DIR -funksjonen en tom streng, som er når løkken ender.

Her er en forklaring av DIR -funksjonen i MSDN -biblioteket:

Dir returnerer det første filnavnet som samsvarer med banenavnet. For å få flere filnavn som matcher banenavnet, ring Dir igjen uten argumenter. Når ikke flere filnavn samsvarer, Dir returnerer en streng med null lengde (“”).

Har du noen gang prøvd noe slikt ved hjelp av VBA? Del hva du gjorde, så kan vi alle lære av det.

Spar gal tid ved å bruke VBA. Sjekk ut Excel VBA -KURS.

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave