Så här kombinerar du flera Excel -filer till en Excel -arbetsbok

Jag fick ett samtal från en vän som ville kombinera flera Excel -filer till en Excel -arbetsbok. Han hade många filer i en mapp och han ville få alla kalkylblad från alla arbetsböcker till en enda arbetsbok.

Även om detta kan göras manuellt skulle det vara tidskrävande och felbenäget.

En enkel VBA -kod kan dock göra detta på några sekunder.

Kombinera flera Excel -filer till en fil

Här är koden som kan kombinera flera Excel -arbetsböcker i en angiven mapp till en enda Excel -arbetsbok:

Sub ConslidateWorkbooks () 'Skapad av Sumit Bansal från https://trumpexcel.com Dim FolderPath As String Dim Filename As String Dim Sheet As Worksheet Application.ScreenUpdating = False FolderPath = Environ ("userprofile") & "DesktopTest" Filename = 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 (Filnamn) .Stäng Filnamn = Dir () Loop Application.ScreenUpdating = True End Sub

Hur använder jag denna kod?

Här är stegen för att använda den här koden:

  • Lägg alla Excel -filer som du vill kombinera i en mapp. För den här självstudien har jag skapat en mapp med namnet Test och har sex filer i den (4 Excel -arbetsböcker och 1 Power Point och Word var).
  • Öppna en ny Excel -arbetsbok.
  • Tryck på ALT + F11 (eller gå till Utvecklare -> Kod -> Visual Basic). Detta öppnar Visual Basic Editor.
  • I VB Editor, i Project Editor, högerklickar du på något av objekten för arbetsboken och går till Infoga -> Modul. Detta kommer att infoga en modul för arbetsboken.
  • Dubbelklicka på modulen. Det öppnar kodfönstret till höger.
  • Kopiera och klistra in ovanstående kod i kodfönstret.
  • I koden måste du ändra följande kodrad:
    FolderPath = Environ ("userprofile") & "Skrivbordstest"

    På den här raden ändrar du delen i dubbla citattecken (markerade med orange) med platsen för mappen där du har filerna som du vill kombinera. I koden som används ovan finns mappen på skrivbordet. Om du har den på någon annan plats, ange den sökvägen här.

  • Placera markören var som helst i koden och klicka på den gröna uppspelningsknappen i verktygsfältets alternativ (eller tryck på F5 -knappen).

Detta kommer att köra koden och alla kalkylblad från alla Excel -filer i mappen skulle samlas i en enda arbetsbok.

Hur fungerar denna kod?

  • Koden använder DIR -funktionen för att hämta filnamnen från den angivna mappen.
  • Följande rad tilldelar variabeln 'Filnamn' det första excelfilnamnet.
    Filnamn = Dir (FolderPath & “*.xls*”)
  • Sedan används Do While -slingan för att kontrollera om alla filer har täckts.
  • I slingan "Gör medan" används "För varje" -slinga för att kopiera alla kalkylblad till arbetsboken där vi kör koden.
  • I slutet av Do Loop används följande kodrad: Filnamn = Dir (). Den tilldelar nästa Excel -filnamn till variabeln Filnamn och slingan startar om.
  • När alla filer är täckta returnerar DIR -funktionen en tom sträng, vilket är när slingan slutar.

Här är en förklaring av DIR -funktionen i MSDN -biblioteket:

Dir returnerar det första filnamnet som matchar söknamnet. För att få ytterligare filnamn som matchar sökvägsnamn, ring Dir igen utan argument. När inga fler filnamn matchar, Dir returnerar en sträng med noll längd (“”).

Har du någonsin provat något sådant med VBA? Dela med dig av det du gjorde så kan vi alla lära av det.

Spara galet mycket tid med VBA. Kolla in Excel VBA -KURS.

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave