Spara kalkylblad som fil med VBA

En återkommande fråga som vi ofta får är hur man skriver ett makro för att spara kalkylblad som fil (separata filer per kalkylblad). Koden nedan gör just detta. VBA-koden går igenom samtliga ark och granskar deras namn. Om namnet inte är Blad1 så sparas arket som en separat fil. (Du kan självklart ta bort denna del eller ändra Blad1 till ett annat bladnamn). Att vi inte sparar Blad1 är bara ett exempel på hur man kan skriva om man inte vill spara ett visst blad. Fler varianter finns givetvis. Vill du lära dig hantera detta och mycket mer är du varmt välkommen på tvådagarskursen VBA & makron i Stockholm City 29-30 maj (2 platser kvar). Du gör anmälan på infocell.se.

Koden ger filen samma namn som arket och lägger den i samma mapp som originalfilen. Om en fil med samma namn redan finns så får man frågan om man vill spara över den.

Testa gärna makrot (och kopiera koden) i filen SparaBladflikarSomEgnaFiler.xlsm.

I filen finns sex olika bladflikar och när makrot körs skapas en ny fil för varje bladflik i samma mapp som filen tillhör.

Spara blad som fil

VBA-kod för att spara varje blad som fil

Nedan ser du koden för att spara kalkylblad som fil. (ibland kan det vara problem att kopiera kod från webbläsare, så öppna filen ovan och kopiera koden från filen för att eliminera detta potentiella problem).

Public Sub SaveSheets()

Dim ark As Worksheet

Dim wbNyArbetsbok As Workbook

‘ Gå igenom alla ark i arbetsboken

For Each ark In ThisWorkbook.Sheets

‘ Blad1 vill vi inte spara ut, men alla andra ark

If ark.Name <> ”Blad1” Then ‘ om arkets namn inte är Blad1

‘ Kopiera arket, innebär att ny fil skapas med det aktuella arket

ark.Copy

‘ Det nya arbetsboken blir automatiskt den aktiverade arbetsboken

‘ vi låter wbNyArbetsbok peka på den nya boken

Set wbNyArbetsbok = ActiveWorkbook

‘ Vi sparar den i samma mapp som originalfilen (”ThisWorkbook.Path & ”\”)
‘ och lägger på arknamet som namn på filen samt filändelsen ”.xlsx”

wbNyArbetsbok.SaveAs (ThisWorkbook.Path & ”\” & ark.Name & ”.xlsx”)

‘ vi stänger den

wbNyArbetsbok.Close

End If

‘ Vi går vidare till nästa ark,dvs går upp

‘ och upprepar for så länge det finns ark kvar

Next

End Sub

Du gillar kanske också...