Een blad dupliceren in Excel met VBA

  • Deel Dit
Michael Brown

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 Sub

    Meerdere 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 Sub

    Excel 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 Sub

    Kopieer 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 Sub

    Opmerking. 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 EndSub

    Met 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 Sub

    Kopieer 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 Sub

    Wanneer 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 Sub

    Om 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 Sub

    Na 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 Sub

    U 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 Sub

    Macro 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 Sub

    Excel 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.
    Public Sub CopySheetFromClosedWorkbook() Dim sourceBook As Workbook Application.ScreenUpdating = False Set sourceBook = Workbooks. Open ( "C:\Users\XXXDocuments\Target_Book.xlsx" ) sourceBook.Sheets( "Sheet1" ).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) sourceBook. Close Application.ScreenUpdating = True End Sub

    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 Sub

    Open 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:

    1. Open het werkblad dat u wilt kopiëren.
    2. Druk op Alt + F11 om de Visual Basic Editor te openen.
    3. Klik in het linkerdeelvenster met de rechtermuisknop op DitWerkboek en klik dan op Plaats > Module .
    4. Plak de code in het venster Code.
    5. 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:

    1. Open de gedownloade werkmap en schakel de inhoud in als daarom wordt gevraagd.
    2. Open uw eigen werkmap en navigeer naar het blad dat u wilt kopiëren.
    3. 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!

    Michael Brown is een toegewijde technologieliefhebber met een passie voor het vereenvoudigen van complexe processen met behulp van softwaretools. Met meer dan tien jaar ervaring in de technische industrie heeft hij zijn vaardigheden in Microsoft Excel en Outlook, evenals Google Spreadsheets en Documenten aangescherpt. Michael's blog is gewijd aan het delen van zijn kennis en expertise met anderen, met eenvoudig te volgen tips en tutorials voor het verbeteren van de productiviteit en efficiëntie. Of je nu een doorgewinterde professional of een beginner bent, Michaels blog biedt waardevolle inzichten en praktisch advies om het meeste uit deze essentiële softwaretools te halen.