Hvordan duplisere et ark i Excel med VBA

  • Dele Denne
Michael Brown

Opplæringen inneholder en samling makroer for å duplisere ark i Excel: kopier og gi nytt navn basert på celleverdi, kopier flere ark, kopier et aktivt regneark til en annen fil uten å åpne det, og mer.

Manuell kopiering av ark i Excel er ganske raskt og enkelt... hvis det utføres bare en eller to ganger. Å duplisere flere ark flere ganger er kjedelig og tidkrevende. På denne siden finner du en håndfull nyttige makroer for å automatisere denne oppgaven.

    Excel VBA for å kopiere ark til ny arbeidsbok

    Denne enkleste enlinjemakroen gjør nøyaktig hva navnet antyder - kopierer det aktive arket til en ny arbeidsbok.

    Public Sub CopySheetToNewWorkbook() activeSheet.Copy End Sub

    Kopier flere ark i Excel med VBA

    Hvis du vil kopier flere ark fra den aktive arbeidsboken til en ny, velg alle regnearkene av interesse og kjør denne makroen:

    Public Sub CopySelectedSheets() ActiveWindow.SelectedSheets.Copy End Sub

    Excel VBA for å kopiere arket til en annen arbeidsbok

    Avhengig av hvor du vil sette inn det kopierte arket, bruk en av følgende makroer.

    Kopier ark til begynnelsen av en annen arbeidsbok

    Denne makroen kopierer det aktive arket før alle andre regneark i målfilen, Bok1 i dette eksemplet. For å kopiere til en annen fil, erstatt "Book1.xlsx" med det fulle navnet på målarbeidsboken.

    Public SubCopySheetToBeginningAnotherWorkbook() activeSheet.Copy Before:=Workbooks( "Book1.xlsx" ).Sheets(1) End Sub

    Kopier ark til slutten av en annen arbeidsbok

    Denne kodebiten dupliserer det aktive regnearket og plasserer kopien til slutten av Bok1 . Igjen, husk å erstatte "Book1.xlsx" med navnet på destinasjonsarbeidsboken.

    Public Sub CopySheetToEndAnotherWorkbook() activeSheet.Copy After:=Workbooks( "Book1.xlsx" ).Sheets(Workbooks( "Book1.xlsx " ).Worksheets.Count) End Sub

    Merk. For at makroene skal fungere, må målarbeidsboken lagres på harddisken eller nettverket.

    Kopier ark til en valgt arbeidsbok

    For å kunne kopiere gjeldende ark til en hvilken som helst åpen arbeidsbok, du kan opprette et brukerskjema (kalt Brukerskjema1 ) med en ListBox -kontroll ( kalt ListBox1 ) og to knapper:

    Deretter dobbeltklikker du på skjemaet og limer inn koden nedenfor i kodevinduet:

    Public SelectedWorkbook As String Private Sub UserForm_Initialize() SelectedWorkbook = "" ListBox1.Clear For Every wbk In Application.Workbooks ListBox1.AddItem (wbk.Name) Next End Sub Private Sub CommandButton1_Click() If ListBox1.ListIndex > -1 Then SelectedWorkbook = ListBox1.List(ListBox1.ListIndex) End If Me.Hide End Sub Private Sub CommandButton2_Click() SelectedWorkbook = "" Me.Hide End Sub

    Med brukerskjemaet på plass kan du bruke en av følgende makroer for å kopiereaktivt ark til arbeidsboken du velger.

    Kopier arket til begynnelsen av den valgte arbeidsboken :

    Public Sub CopySheetToBeginningAnotherWorkbook() Load UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook " " ) Deretter activeSheet.Copy Before:=Workbooks(UserForm1.SelectedWorkbook).Sheets(1) End If Unload UserForm1 End Sub

    Kopier arket til enden av den valgte arbeidsboken :

    Public Sub CopySheetToEndAnotherWorkbook() Load UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "") Then activeSheet.Copy After:=Workbooks( _ UserForm1.SelectedWorkbook).Sheets( _ Workbooks(UserForm1.SelectedWorkbook)UserFormkSheets.SelectedWorkbook). End Sub

    Når den kjøres i Excel, vil makroen vise deg en liste over alle åpne arbeidsbøker. Du velger den nødvendige og klikker OK:

    Excel-makro for å kopiere ark og gi nytt navn

    Når du kopierer et ark i Excel, får replikaen en navn i standardformatet som Ark1 (2) . Følgende makroer kan spare deg for problemer med å endre standardnavnet manuelt.

    Denne koden dupliserer det aktive regnearket, navngir kopien som "Testark" (du står fritt til å erstatte det med et hvilket som helst annet navn du liker) , og plasserer det kopierte arket på slutten av gjeldende arbeidsbok.

    Public Sub CopySheetAndRenamePredefined() activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name ="Test Sheet" End Sub

    For å la brukeren spesifisere navnet på det kopierte arket , bruk denne koden:

    Public Sub CopySheetAndRename() Dim newName As String On Error Resume Next newName = InputBox( "Skriv inn navnet på det kopierte regnearket" ) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub

    Ved kjøring vil makroen viser følgende inndataboks, der du skriver inn ønsket navn og trykker OK:

    Excel-makro for å kopiere ark og gi nytt navn basert på celleverdi

    I noen situasjoner kan det være mer praktisk å navngi en kopi med en bestemt celleverdi, for eksempel en kolonneoverskrift. For dette tar du ganske enkelt koden ovenfor og oppgir verdien av den gjeldende valgte cellen til inndataboksen automatisk. Som med forrige eksempel, vil kopien bli plassert på slutten av den aktive arbeidsboken.

    Det vanskeligste ville være å la brukerne alltid velge riktig celle før de kjører makroen :)

    Public Sub CopySheetAndRenameByCell() Dim newName As String On Error Resume Next newName = InputBox( "Skriv inn navnet på det kopierte regnearket" , "Kopier regneark" , ActiveCell.Value) Hvis nyttNavn "" Så activeSheet. Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub

    Alternativt kan du hardkode adressen tilcellen som kopien skal navngis etter, celle A1 i koden nedenfor. For å navngi det kopierte regnearket basert på en annen celle, erstatt A1 med en passende cellereferanse.

    Public Sub CopySheetAndRenameByCell2() Dim wks As Worksheet Set wks = activeSheet activeSheet.Copy After:=Worksheets(Sheets.Count) If wks.Range ( "A1" ).Verdi "" Så ved feil Gjenoppta neste aktivark.Navn = wks.Range( "A1" ).Verdislutt Hvis wks.Aktiver End Sub

    Makro for å kopiere regneark til en lukket arbeidsbok

    Denne makroen kopierer det aktive arket til slutten av en lukket arbeidsbok. Navnet på en annen arbeidsbok er ikke spesifisert i koden - makroen åpner standard Windows Utforsker-vinduet og lar deg velge hvilken som helst destinasjonsfil:

    Etter at du har valgt filen og klikk Åpne , vil makroen kopiere det aktive arket og lukke målarbeidsboken automatisk.

    Public Sub CopySheetToClosedWorkbook() Dim fileName Dim closedBook As Workbook Dim currentSheet As Worksheet fileName = Application.GetOpenFilename( "Excel Filer (*.xlsx), *.xlsx" ) If fileName False Then Application.ScreenUpdating = False Set currentSheet = Application.activeSheet Set closedBook = Arbeidsbøker. Åpne (filnavn) currentSheet.Copy After:=closedBook.Sheets(closedBook.Worksheets.Count) closedBook. Close ( True ) Application.ScreenUpdating = True End If End Sub

    Excel VBA for å kopiere ark fra en annen arbeidsbok utenåpning

    Denne makroen lar deg kopiere et regneark fra en annen Excel-fil uten å åpne den. Det kopierte arket vil bli satt inn på slutten av gjeldende arbeidsbok.

    Bare husk å gjøre et par erstatninger i koden:

    • C:\Users\XXX\Documents\ Target_Book.xlsx bør endres til den faktiske banen og navnet på arbeidsboken du vil kopiere et ark fra.
    • Ark1 bør erstattes med navnet på arket du vil kopiere.
    Public Sub CopySheetFromClosedWorkbook() Dim sourceBook As Workbook Application.ScreenUpdating = False Sett sourceBook = Arbeidsbøker. Åpne ("C:\Users\XXX\Documents\Target_Book.xlsx") sourceBook.Sheets( "Sheet1"). Kopier etter:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) kildebok. Lukk Application.ScreenUpdating = True End Sub

    Excel VBA for å duplisere arket flere ganger

    Noen ganger kan det hende du må duplisere det samme arket mer enn én gang, for eksempel for å teste forskjellige formler på samme datasett. Dette kan enkelt gjøres med følgende makro.

    Public Sub DuplicateSheetMultipleTimes() Dim n As Integer On Error Resume Next n = InputBox( "Hvor mange kopier av det aktive arket vil du lage?" ) Hvis n > = 1 Then For numtimes = 1 Til n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End If End Sub

    Åpne det originale arket, kjør makroen, spesifiser hvor mange kopier av det aktive arketdu vil lage, og klikk OK :

    Hvordan duplisere ark i Excel med VBA

    For å kopiere et ark i Excel med en av makroene ovenfor, kan du enten sette inn VBA-koden i din egen bok eller kjøre en makro fra eksempelarbeidsboken vår.

    Hvordan legge til en makro i arbeidsboken din

    For å sette inn koden i arbeidsboken din, utfør disse trinnene:

    1. Åpne regnearket du vil kopiere.
    2. Trykk Alt + F11 for å åpne Visual Basic Editor.
    3. På venstre rute, høyreklikk ThisWorkbook , og klikk deretter Sett inn > Module .
    4. Lim inn koden i kodevinduet.
    5. Trykk F5 for å kjøre makroen.

    For detaljerte trinnvise instruksjoner, se Hvordan sette inn VBA-kode i Excel.

    Hvordan kjøres en makro fra eksempelarbeidsboken vår

    Alternativt kan du laste ned eksempelarbeidsboken vår til Duplicate Excel Sheets og kjøre koden derfra.

    Eksempelarbeidsboken inneholder følgende makroer:

    CopySheetToNewWorkbook - kopierer cu rlei regneark til en ny arbeidsbok.

    CopySelectedSheets - kopierer flere ark som du velger til en ny arbeidsbok.

    CopySheetToBeginningAnotherWorkbook - kopierer det aktive arket til begynnelsen av en annen arbeidsbok.

    CopySheetToEndAnotherWorkbook - kopierer det aktive arket til slutten av en annen Excel-fil.

    CopySheetAndRename - dupliserer gjeldende ark,gir det nytt navn som spesifisert av brukeren, og legger kopien etter alle andre ark i gjeldende arbeidsbok.

    CopySheetAndRenamePredefined - dupliserer det aktive arket, gir et hardkodet navn til kopien og plasserer den på slutten av gjeldende arbeidsbok.

    CopySheetAndRenameByCell - lager en kopi av det aktive arket og gir det nytt navn basert på den valgte celleverdien.

    CopySheetAndRenameByCell2 - kopierer det aktive arket og gir det nytt navn basert på den hardkodede celleadressen.

    CopySheetToClosedWorkbook - lar deg kopiere arket til en lukket arbeidsbok.

    CopySheetFromClosedWorkbook - lar deg kopiere et ark fra en annen Excel-fil uten å åpne den.

    DuplicateSheetMultipleTimes - lar deg duplisere et ark i Excel flere ganger.

    Til kjør makroen i Excel, bare gjør følgende:

    1. Åpne den nedlastede arbeidsboken og aktiver innholdet hvis du blir bedt om det.
    2. Åpne din egen arbeidsbok og naviger til arket du vil kopi.
    3. <1 7>I regnearket ditt, trykk Alt + F8 , velg makroen du er interessert i, og klikk Kjør .

    Slik kan du duplisere et ark i Excel med VBA. Jeg takker for at du leser og håper å se deg på bloggen vår neste uke!

    Michael Brown er en dedikert teknologientusiast med en lidenskap for å forenkle komplekse prosesser ved hjelp av programvareverktøy. Med mer enn ti års erfaring i teknologibransjen, har han forbedret ferdighetene sine i Microsoft Excel og Outlook, samt Google Sheets og Docs. Michaels blogg er dedikert til å dele sin kunnskap og ekspertise med andre, og gir enkle å følge tips og veiledninger for å forbedre produktivitet og effektivitet. Enten du er en erfaren profesjonell eller nybegynner, tilbyr Michaels blogg verdifull innsikt og praktiske råd for å få mest mulig ut av disse viktige programvareverktøyene.