Sådan duplikeres et ark i Excel med VBA

  • Del Dette
Michael Brown

Vejledningen indeholder en samling makroer til at duplikere ark i Excel: kopiere og omdøbe baseret på celleværdi, kopiere flere ark, kopiere et aktivt regneark til en anden fil uden at åbne det og meget mere.

Manuel kopiering af ark i Excel er ret hurtigt og ligetil... hvis det kun udføres en eller to gange. Det er kedeligt og tidskrævende at kopiere flere ark flere gange. På denne side finder du en håndfuld nyttige makroer til automatisering af denne opgave.

    Excel VBA til at kopiere ark til ny projektmappe

    Denne enkeltstående makro gør præcis, hvad navnet antyder - den kopierer det aktive ark til en ny projektmappe.

    Public Sub CopySheetToNewWorkbook() activeSheet.Copy End Sub

    Kopier flere ark i Excel med VBA

    Hvis du vil kopiere flere ark fra den aktive projektmappe til en ny, skal du vælge alle de relevante regneark og køre denne makro:

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

    Excel VBA til at kopiere ark til en anden projektmappe

    Afhængigt af hvor du vil indsætte det kopierede ark, skal du bruge en af følgende makroer.

    Kopier ark til begyndelsen af en anden projektmappe

    Denne makro kopierer det aktive ark før alle andre regneark i destinationsfilen, Bog1 Hvis du vil kopiere til en anden fil, skal du erstatte "Book1.xlsx" med det fulde navn på din målarbejdsmappe.

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

    Kopier ark til slutningen af en anden projektmappe

    Dette stykke kode duplikerer det aktive regneark og placerer kopien i slutningen af Bog1 Husk igen at erstatte "Book1.xlsx" med navnet på din destinationsarbejdsmappe.

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

    Bemærk. For at makroerne kan fungere, skal målarbejdsmappen være gemt på din harddisk eller på netværket.

    Kopier ark til en valgt projektmappe

    For at kunne kopiere det aktuelle ark til en hvilken som helst åben arbejdsbog kan du oprette en UserForm (med navnet UserForm1 ) med en ListBox kontrol ( ved navn ListBox1 ) og to knapper:

    Dobbeltklik derefter på formularen, og indsæt nedenstående kode i kodevinduet:

    Public SelectedWorkbook As String Private Sub UserForm_Initialize() SelectedWorkbook = "" ListBox1.Clear For Each 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 EndUnder

    Når UserForm er på plads, kan du bruge en af følgende makroer til at kopiere det aktive ark til en arbejdsbog efter eget valg.

    Kopiark til den begyndelsen af den valgte projektmappe :

    Public Sub CopySheetToBeginningAnotherWorkbook() Indlæs UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy Before:=Workbooks(UserForm1.SelectedWorkbook).Sheets(1) End If Unload UserForm1 End Sub

    Kopiark til den slutningen af den valgte projektmappe :

    Public Sub CopySheetToEndAnotherWorkbook() Indlæs UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy After:=Workbooks( _ UserForm1.SelectedWorkbook).Sheets( _ Workbooks(UserForm1.SelectedWorkbook). _ Worksheets.Count) End If Unload UserForm1 End Sub

    Når makroen køres i Excel, viser makroen en liste over alle åbne arbejdsmapper. Du vælger den ønskede arbejdsmappe og klikker på OK:

    Excel-makro til at kopiere ark og omdøbe

    Når du kopierer et ark i Excel, får kopien et navn i standardformatet som f.eks. Ark1 (2) Med følgende makroer kan du spare dig besværet med at ændre standardnavnet manuelt.

    Denne kode duplikerer det aktive regneark, navngiver kopien som "Testark" (du kan frit erstatte det med et andet navn) og placerer det kopierede ark i slutningen af den aktuelle projektmappe.

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

    For at give brugeren mulighed for at angive navnet på det kopierede ark , bruge denne kode:

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

    Når makroen kører, vises følgende indtastningsboks, hvor du skriver det ønskede navn og trykker på OK:

    Excel-makro til at kopiere ark og omdøbe baseret på celleværdi

    I nogle situationer kan det være mere praktisk at navngive en kopi med en specifik celleværdi, f.eks. en kolonneoverskrift. I dette tilfælde skal du blot tage ovenstående kode og angive værdien af den aktuelt valgte celle til indtastningsfeltet automatisk. Som i det foregående eksempel placeres kopien sidst i den aktive projektmappe.

    Det vanskeligste ville være at få dine brugere til altid at vælge den rigtige celle, før de kører makroen :)

    Public Sub CopySheetAndRenameByCell() Dim newName As String On Error Resume Next newName = InputBox( "Indtast navnet på det kopierede regneark" , "Copy worksheet" , ActiveCell.Value) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub

    Alternativt kan du hardcode adressen på cellen som kopien skal navngives med, celle A1 i nedenstående kode. Hvis du vil navngive det kopierede regneark baseret på en anden celle, skal du erstatte A1 med en passende cellehenvisning.

    Public Sub CopySheetAndRenameByCell2() Dim wks As Worksheet Set wks = activeSheet activeSheet.Copy After:=Worksheets(Sheets.Count) If wks.Range( "A1" ).Value "" Then On Error Resume Next activeSheet.Name = wks.Range( "A1" ).Value End If wks.Activate End Sub

    Makro til at kopiere regneark til en lukket projektmappe

    Denne makro kopierer det aktive ark til slutningen af en lukket projektmappe. Navnet på en anden projektmappe er ikke angivet i koden - makroen åbner standardvinduet Windows Stifinder og giver dig mulighed for at vælge en hvilken som helst destinationsfil:

    Når du har valgt filen og klikket på Åbn kopierer makroen det aktive ark og lukker automatisk målarbejdsmappen.

    Public Sub CopySheetToClosedWorkbook() Dim fileName Dim closedBook As Workbook Dim currentSheet As Worksheet fileName = Application.GetOpenFilename( "Excel Files (*.xlsx), *.xlsx" ) If fileName False Then Application.ScreenUpdating = False Set currentSheet = Application.activeSheet Set closedBook = Workbooks. Open (fileName) currentSheet.Copy After:=closedBook.Sheets(closedBook.Worksheets.Count)closedBook. Close ( True ) Application.ScreenUpdating = True End If End Sub

    Excel VBA til at kopiere ark fra en anden projektmappe uden at åbne

    Med denne makro kan du kopiere et regneark fra en anden Excel-fil uden at åbne den. Det kopierede ark indsættes i slutningen af den aktuelle arbejdsmappe.

    Du skal blot huske at foretage et par udskiftninger i koden:

    • C:\Users\XXX\Documents\Target_Book.xlsx skal ændres til den faktiske sti og det faktiske navn på den projektmappe, hvorfra du vil kopiere et ark.
    • Sheet1 skal erstattes med navnet på det ark, du vil kopiere.
    Public Sub CopySheetFromClosedWorkbook() Dim sourceBook As Workbook Application.ScreenUpdating = False Set sourceBook = Workbooks. Open ( "C:\Users\XXX\Documents\Target_Book.xlsx" ) sourceBook.Sheets( "Sheet1" ).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) sourceBook. Close Application.ScreenUpdating = True End Sub

    Excel VBA til at duplikere ark flere gange

    Nogle gange kan det være nødvendigt at duplikere det samme ark mere end én gang, f.eks. for at teste forskellige formler på det samme datasæt. Dette kan nemt gøres med følgende makro.

    Public Sub DuplicateSheetMultipleTimes() Dim n As Integer On Error Resume Next n = InputBox( "Hvor mange kopier af det aktive ark ønsker du at lave?" ) If n>= 1 Then For numtimes = 1 To n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End If End Sub

    Åbn det originale ark, kør makroen, angiv hvor mange kopier af det aktive ark, du vil lave, og klik på OK :

    Sådan duplikeres ark i Excel med VBA

    Hvis du vil kopiere et ark i Excel med en af ovenstående makroer, kan du enten indsætte VBA-koden i din egen bog eller køre en makro fra vores eksempelarbejdsmappe.

    Sådan tilføjer du en makro til din projektmappe

    Du kan indsætte koden i din projektmappe ved at udføre følgende trin:

    1. Åbn det regneark, du vil kopiere.
    2. Tryk på Alt + F11 for at åbne Visual Basic-editoren.
    3. Højreklik på i venstre rude på ThisWorkbook , og klik derefter på Indsæt > Modul .
    4. Indsæt koden i vinduet Kode.
    5. Tryk på F5 for at køre makroen.

    Du kan finde en detaljeret trin-for-trin-vejledning i Sådan indsætter du VBA-kode i Excel.

    Sådan kører du en makro fra vores eksempelarbejdsbog

    Alternativt kan du downloade vores prøvearbejdsmappe til Dupliker Excel-ark og køre koden derfra.

    Eksempelarbejdsbogen indeholder følgende makroer:

    CopySheetToNewWorkbook - kopierer det aktuelle regneark til en ny projektmappe.

    CopySelectedSheets - kopierer flere ark, som du vælger, til en ny projektmappe.

    CopySheetToBeginningAnotherWorkbook - kopierer det aktive ark til begyndelsen af en anden projektmappe.

    CopySheetToEndAnotherWorkbook - kopierer det aktive ark til slutningen af en anden Excel-fil.

    CopySheetAndRename - duplikerer det aktuelle ark, omdøber det som angivet af brugeren og placerer kopien efter alle andre ark i den aktuelle projektmappe.

    CopySheetAndRenamePrededefined - duplikerer det aktive ark, giver kopien et hårdtkodet navn og placerer den i slutningen af den aktuelle projektmappe.

    CopySheetAndRenameByCell - laver en kopi af det aktive ark og omdøber det på baggrund af den valgte celleværdi.

    CopySheetAndRenameByCell2 - kopierer det aktive ark og omdøber det på baggrund af den hardcodede celleadresse.

    CopySheetToClosedWorkbook - giver dig mulighed for at kopiere ark til en lukket projektmappe.

    CopySheetFromClosedWorkbook - giver dig mulighed for at kopiere et ark fra en anden Excel-fil uden at åbne den.

    DuplicateSheetMultipleTimes - giver dig mulighed for at duplikere et ark i Excel flere gange.

    For at køre makroen i Excel skal du blot gøre følgende:

    1. Åbn den downloadede arbejdsbog, og aktiver indholdet, hvis du bliver bedt om det.
    2. Åbn din egen projektmappe, og gå til det ark, du vil kopiere.
    3. Tryk på Alt + F8 i dit regneark, vælg den ønskede makro, og klik på Kør .

    Sådan kan du duplikere et ark i Excel med VBA. Tak fordi du læste med, og jeg håber at se dig på vores blog i næste uge!

    Michael Brown er en dedikeret teknologientusiast med en passion for at forenkle komplekse processer ved hjælp af softwareværktøjer. Med mere end ti års erfaring i teknologibranchen har han finpudset sine færdigheder i Microsoft Excel og Outlook samt Google Sheets og Docs. Michaels blog er dedikeret til at dele sin viden og ekspertise med andre og giver nemme at følge tips og vejledninger til at forbedre produktiviteten og effektiviteten. Uanset om du er en erfaren professionel eller nybegynder, tilbyder Michaels blog værdifuld indsigt og praktiske råd til at få mest muligt ud af disse vigtige softwareværktøjer.