Indholdsfortegnelse
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 SubKopier 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 SubExcel 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 SubKopier 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 SubBemæ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 EndUnderNå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 SubKopiark 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 SubNå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 SubFor 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 SubNå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 SubAlternativt 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 SubMakro 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 SubExcel 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.
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:
- Åbn det regneark, du vil kopiere.
- Tryk på Alt + F11 for at åbne Visual Basic-editoren.
- Højreklik på i venstre rude på ThisWorkbook , og klik derefter på Indsæt > Modul .
- Indsæt koden i vinduet Kode.
- 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:
- Åbn den downloadede arbejdsbog, og aktiver indholdet, hvis du bliver bedt om det.
- Åbn din egen projektmappe, og gå til det ark, du vil kopiere.
- 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!