Inhoudsopgave
De tutorial biedt een verzameling macro's om bladen in Excel te dupliceren: kopiëren en hernoemen op basis van celwaarde, meerdere bladen kopiëren, een actief werkblad naar een ander bestand kopiëren zonder het te openen, en meer.
Bladen handmatig kopiëren in Excel is vrij snel en eenvoudig... als het maar één of twee keer gebeurt. Meerdere bladen meerdere keren kopiëren is saai en tijdrovend. Op deze pagina vindt u een handvol handige macro's om deze taak te automatiseren.
Excel VBA om blad naar nieuwe werkmap te kopiëren
Deze eenvoudigste eenregelige macro doet precies wat zijn naam suggereert - kopieert het actieve blad naar een nieuwe werkmap.
Public Sub Kopieerblad naar nieuw werkboek() activeSheet.Copy End SubMeerdere bladen in Excel kopiëren met VBA
Als u verschillende bladen uit de actieve werkmap wilt kopiëren naar een nieuwe werkmap, selecteert u alle werkbladen van belang en voert u deze macro uit:
Public Sub GeselecteerdeBladen Kopiëren() ActiveWindow.GeselecteerdeBladen.Kopiëren End SubExcel VBA om blad te kopiëren naar een andere werkmap
Afhankelijk van waar u het gekopieerde blad wilt invoegen, gebruikt u een van de volgende macro's.
Blad kopiëren naar het begin van een andere werkmap
Deze macro kopieert het actieve blad vóór alle andere werkbladen in het doelbestand, Boek 1 Om naar een ander bestand te kopiëren, vervangt u "Boek1.xlsx" door de volledige naam van uw doelwerkmap.
Public Sub KopieerBladNaarBeginAndereWerkmap() activeSheet.Copy Before:=Werkboeken( "Boek1.xlsx" ).Sheets(1) End SubKopieer blad naar het einde van een andere werkmap
Dit stukje code dupliceert het actieve werkblad en plaatst de kopie aan het einde van Boek 1 Nogmaals, vergeet niet "Boek1.xlsx" te vervangen door de naam van uw doel-werkmap.
Public Sub CopySheetToEndAnotherWorkbook() activeSheet.Copy After:=Workbooks( "Book1.xlsx" ).Sheets(Workbooks( "Book1.xlsx" ).Worksheets.Count) End SubOpmerking. Om de macro's te laten werken, moet de doel-werkmap op uw harde schijf of netwerk zijn opgeslagen.
Blad kopiëren naar een geselecteerde werkmap
Om het huidige blad te kunnen kopiëren naar elke open werkmap, kunt u een UserForm maken (met de naam UserForm1 ) met een ListBox controle ( genaamd ListBox1 ) en twee knoppen:
Dubbelklik vervolgens op het formulier en plak onderstaande code in het venster Code:
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 EndSubMet de UserForm op zijn plaats kunt u een van de volgende macro's gebruiken om het actieve blad te kopiëren naar de werkmap van uw keuze.
Kopieer blad naar de begin van de geselecteerde werkmap :
Public Sub CopySheetToBeginAnotherWorkbook() Load UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy Before:=Workbooks(UserForm1.SelectedWorkbook).Sheets(1) End If Unload UserForm1 End SubKopieer blad naar de einde van de geselecteerde werkmap :
Public Sub CopySheetToEndAnotherWorkbook() Load UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy After:=Workbooks( _ UserForm1.SelectedWorkbook).Sheets( _ Workbooks(UserForm1.SelectedWorkbook). _ Worksheets.Count) End If Unload UserForm1 End SubWanneer de macro in Excel wordt uitgevoerd, toont hij u een lijst van alle momenteel geopende werkmappen. U selecteert de benodigde en klikt op OK:
Excel macro om blad te kopiëren en hernoemen
Wanneer u een blad kopieert in Excel, krijgt de replica een naam in het standaardformaat zoals Blad1 (2) De volgende macro's besparen u de moeite om de standaardnaam handmatig te veranderen.
Deze code dupliceert het actieve werkblad, noemt de kopie "Testblad" (u bent vrij deze te vervangen door een andere naam), en plaatst het gekopieerde blad aan het einde van de huidige werkmap.
Public Sub CopySheetAndRenamePredefined() activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = "Test Sheet" End SubOm de gebruiker in staat te stellen geef de naam voor het gekopieerde blad Gebruik deze code:
Public Sub CopySheetAndRename() Dim newName As String On Error Resume Next newName = InputBox( "Enter the name for the copied worksheet" ) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End SubNa het uitvoeren van de macro verschijnt het volgende invoerveld, waarin u de gewenste naam typt en op OK drukt:
Excel macro om blad te kopiëren en hernoemen op basis van celwaarde
In sommige situaties kan het handiger zijn om een kopie een naam te geven met een specifieke celwaarde, bijvoorbeeld een kolomkop. Hiervoor neemt u gewoon de bovenstaande code en geeft u de waarde van de huidig geselecteerde cel Net als in het vorige voorbeeld wordt de kopie aan het einde van de actieve werkmap geplaatst.
Het moeilijkste zou zijn om uw gebruikers altijd de juiste cel te laten selecteren alvorens de macro uit te voeren :)
Public Sub CopySheetAndRenameByCell() Dim newName As String On Error Resume Next newName = InputBox( "Enter the name for the copied worksheet" , "Copy worksheet" , ActiveCell.Value) Als newName "" Dan activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End SubU kunt ook hardcode het adres van de cel waarnaar de kopie moet worden genoemd, cel A1 in de onderstaande code. Om het gekopieerde werkblad een naam te geven op basis van een andere cel, vervangt u A1 door een geschikte celverwijzing.
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 SubMacro om werkblad te kopiëren naar een gesloten werkmap
Deze macro kopieert het actieve blad naar het einde van een gesloten werkmap. De naam van een andere werkmap wordt niet opgegeven in de code - de macro opent het standaard Windows Verkenner-venster en laat u een willekeurig doelbestand kiezen:
Nadat u het bestand hebt geselecteerd en op Open zal de macro het actieve blad kopiëren en de doelwerkmap automatisch sluiten.
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)geslotenBook. Sluiten ( True ) Application.ScreenUpdating = True End If End SubExcel VBA om blad vanuit een andere werkmap te kopiëren zonder te openen
Met deze macro kunt u een werkblad uit een ander Excel-bestand kopiëren zonder het te openen. Het gekopieerde blad wordt ingevoegd aan het einde van de huidige werkmap.
Vergeet niet een paar vervangingen in de code aan te brengen:
- C:\UsersXXXDocumenten_Boek.xlsx moet veranderd worden in het werkelijke pad en de naam van de werkmap waaruit u een blad wilt kopiëren.
- Blad1 moet worden vervangen door de naam van het blad dat u wilt kopiëren.
Excel VBA om blad meerdere keren te dupliceren
Soms moet u hetzelfde blad meer dan eens dupliceren, bijvoorbeeld om verschillende formules op dezelfde gegevensset te testen. Dat kan gemakkelijk met de volgende macro.
Public Sub DuplicateSheetMultipleTimes() Dim n As Integer On Error Resume Next n = InputBox( "Hoeveel kopieën van het actieve blad wilt u maken?" ) If n>= 1 Then For numtimes = 1 To n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End If End SubOpen het originele blad, voer de macro uit, geef aan hoeveel kopieën u van het actieve blad wilt maken en klik op OK :
Bladen dupliceren in Excel met VBA
Om een blad in Excel te kopiëren met een van de bovenstaande macro's, kunt u de VBA-code invoegen in uw eigen boek of een macro uitvoeren uit onze voorbeeldwerkmap.
Hoe voeg je een macro toe aan je werkmap
Voer de volgende stappen uit om de code in uw werkmap in te voegen:
- Open het werkblad dat u wilt kopiëren.
- Druk op Alt + F11 om de Visual Basic Editor te openen.
- Klik in het linkerdeelvenster met de rechtermuisknop op DitWerkboek en klik dan op Plaats > Module .
- Plak de code in het venster Code.
- Druk op F5 om de macro uit te voeren.
Voor de gedetailleerde stap-voor-stap instructies, zie Hoe VBA-code in te voegen in Excel.
Een macro uitvoeren vanuit onze voorbeeldwerkmap
U kunt ook onze voorbeeldwerkmap Duplicate Excel Sheets downloaden en de code van daaruit uitvoeren.
De voorbeeldwerkmap bevat de volgende macro's:
CopySheetToNewWorkbook - kopieert het huidige werkblad naar een nieuwe werkmap.
CopySelectedSheets - kopieert meerdere bladen die u selecteert naar een nieuwe werkmap.
CopySheetToBeginAnotherWorkbook - kopieert het actieve blad naar het begin van een andere werkmap.
CopySheetToEndAnotherWorkbook - kopieert het actieve blad naar het einde van een ander Excel-bestand.
CopySheetAndRename - dupliceert het huidige blad, hernoemt het zoals opgegeven door de gebruiker, en plaatst de kopie na alle andere bladen in de huidige werkmap.
CopySheetAndRenamePredefined - dupliceert het actieve blad, geeft een harde naam aan de kopie en plaatst deze aan het einde van de huidige werkmap.
CopySheetAndRenameByCell - maakt een kopie van het actieve blad en hernoemt het op basis van de geselecteerde celwaarde.
CopySheetAndRenameByCell2 - kopieert het actieve blad en hernoemt het op basis van het vastgelegde celadres.
CopySheetToClosedWorkbook - kunt u een blad kopiëren naar een gesloten werkmap.
CopySheetFromClosedWorkbook - Hiermee kunt u een blad uit een ander Excel-bestand kopiëren zonder het te openen.
DuplicateSheetMultipleTimes - kunt u een blad in Excel meerdere malen dupliceren.
Doe het volgende om de macro in Excel uit te voeren:
- Open de gedownloade werkmap en schakel de inhoud in als daarom wordt gevraagd.
- Open uw eigen werkmap en navigeer naar het blad dat u wilt kopiëren.
- Druk in uw werkblad op Alt + F8 , selecteer de gewenste macro en klik op Ren .
Dat is hoe je een blad kunt dupliceren in Excel met VBA. Ik dank u voor het lezen en hoop u volgende week op onze blog te zien!