VBA-blad kopiëren / blad kopiëren naar een andere werkmap

In deze zelfstudie wordt beschreven hoe u een blad of werkblad kunt kopiëren met VBA.

Werkblad kopiëren naar nieuwe werkmap

Om een ​​werkblad naar een nieuwe werkmap te kopiëren:

1 Bladen ("Blad1"). Kopiëren

Kopieer ActiveSheet naar nieuwe werkmap

Om de ActiveSheet naar een nieuwe werkmap te kopiëren:

1 ActiveSheet.Copy

Meerdere bladen kopiëren naar nieuwe werkmap

Om meerdere Spreadsheets naar een nieuwe werkmap te kopiëren:

1 ActiveWindow.SelectedSheets.Copy

Blad kopiëren binnen dezelfde werkmap

We zijn begonnen door u het meest eenvoudige voorbeeld van een kopie van Spreadsheets te laten zien: blad(len) kopiëren naar een nieuwe werkmap. Deze voorbeelden hieronder laten u zien hoe u een werkblad in dezelfde werkmap kopieert. Wanneer u een werkblad in een werkboek kopieert, moet u een locatie opgeven. Om een ​​locatie op te geven, vertelt u VBA om het werkblad VOOR of NA een ander werkblad te verplaatsen.

Blad kopiëren voor een ander blad

Hier zullen we specificeren om het blad vóór Blad2 te kopiëren en te plakken

1 Spreadsheets ("Blad1"). Kopieer eerder:=Sheets ("Blad2")

Kopieer blad voor eerste blad

In plaats van de Bladnaam op te geven, kunt u ook de Bladpositie specificeren. Hier kopiëren en plakken we een blad vóór het eerste blad in de werkmap.

1 Bladen ("Blad1"). Kopieer voor:= Bladen(1)

Het nieuw gemaakte werkblad is nu het eerste werkblad in de werkmap.

Blad kopiëren na laatste blad

Gebruik de eigenschap After om VBA te vertellen het blad NA een ander blad te plakken. Hier zullen we een blad kopiëren en plakken na het laatste blad in de werkmap:

1 Bladen ("Blad1"). Kopiëren na: = Bladen (Vellen. Aantal)

Merk op dat we Spreadsheets.Count hebben gebruikt om het aantal bladen in de werkmap te tellen.

Blad verplaatsen

U kunt een werkblad ook binnen een werkmap verplaatsen met een vergelijkbare syntaxis. Met deze code wordt Blad1 naar het einde van de werkmap verplaatst:

1 Bladen ("Blad1"). Verplaatsen na: = Bladen (Vellen. Aantal)

Kopieer en naamblad

Na het kopiëren en plakken van een blad, wordt het nieuw gemaakte blad de ActiveSheet. Dus om ons nieuwe blad te hernoemen, gebruik je gewoon ActiveSheet.Name:

123456 Sub CopySheetRename1()Bladen ("Blad1"). Kopiëren na: = Bladen (Vellen. Aantal)ActiveSheet.Name = "LastSheet"Einde sub

Als de bladnaam al bestaat, genereert de bovenstaande code een fout. In plaats daarvan kunnen we "On Error Resume Next" gebruiken om VBA te vertellen het blad een naam te geven en door te gaan met de rest van de procedure:

12345678 Sub CopySheetRename2()Bladen ("Blad1"). Kopiëren na: = Bladen (Vellen. Aantal)Bij fout Hervatten volgendeActiveSheet.Name = "LastSheet"Bij fout Ga naar 0Einde sub

Of gebruik onze RangeExists-functie om te testen of de bladnaam al bestaat voordat u probeert het blad te kopiëren:

123456789101112131415161718 Sub CopySheetRename3()Als RangeExists ("LastSheet") DanMsgBox "Blad bestaat al."AndersBladen ("Blad1"). Kopiëren na: = Bladen (Vellen. Aantal)ActiveSheet.Name = "LastSheet"Stop alsEinde subFunctiebereik bestaat (WhatSheet As String, optioneel ByVal WhatRange As String = "A1") As BooleanGedimde test als bereikBij fout Hervatten volgendeStel test in = ActiveWorkbook.Sheets(WhatSheet).Range(WhatRange)RangeExists = Err.Number = 0Bij fout Ga naar 0Functie beëindigen

Kopieer en naamblad op basis van celwaarde

U kunt ook een blad kopiëren en een naam geven op basis van een celwaarde. Deze code geeft het werkblad een naam op basis van de celwaarde in A1

12345678 Sub CopySheetRenameFromCell()Bladen ("Blad1"). Kopiëren na: = Bladen (Vellen. Aantal)Bij fout Hervatten volgendeActiveSheet.Name = Bereik ("A1"). WaardeBij fout Ga naar 0Einde sub

Werkblad kopiëren naar een andere werkmap

Tot nu toe hebben we gewerkt met het kopiëren van Spreadsheets in een werkmap. Nu zullen we voorbeelden behandelen om Spreadsheets naar andere werkmappen te kopiëren en te plakken. Deze code kopieert een blad naar het begin van een andere werkmap:

1 Spreadsheets ("Blad1"). Kopieer voor:=Werkboeken ("Voorbeeld.xlsm"). Bladen(1)

Hiermee wordt een werkblad naar het einde van een ander werkboek gekopieerd.

1 Spreadsheets ("Blad1"). Kopiëren na:=Werkmappen ("Voorbeeld.xlsm"). Bladen (Werkboeken ("Voorbeeld.xlsm"). Bladen.Aantal)

Merk op dat we hebben vervangen 1 met Werkmappen ("Voorbeeld.xlsm"). Bladen.Aantal om het laatste werkblad te krijgen.

Werkblad kopiëren naar een gesloten werkmap

U kunt ook een werkblad naar een gesloten werkmap kopiëren. Met deze code wordt een gesloten werkmap geopend, zodat u er een werkblad in kunt kopiëren.

123456789 Sub CopySheetToClosedWB()Application.ScreenUpdating = FalseSet closedBook = Workbooks.Open("D:\Dropbox\excel\articles\example.xlsm")Spreadsheets ("Blad1"). Kopieer vóór:=closedBook.Sheets(1)closedBook.Close SaveChanges:=TrueApplication.ScreenUpdating = TrueEinde sub

Blad kopiëren uit een andere werkmap zonder deze te openen

Omgekeerd kopieert deze code een werkblad UIT een gesloten werkmap zonder dat u de werkmap handmatig hoeft te openen.

123456789 Sub CopySheetFromClosedWB()Application.ScreenUpdating = FalseSet closedBook = Workbooks.Open("D:\Dropbox\excel\articles\example.xlsm")closedBook.Sheets("Blad1").Copy Before:=ThisWorkbook.Sheets(1)closedBook.Close SaveChanges:=FalseApplication.ScreenUpdating = TrueEinde sub

Merk op dat we in beide voorbeelden ScreenUpdating hebben uitgeschakeld, zodat het proces op de achtergrond wordt uitgevoerd.

Excel-blad meerdere keren dupliceren

U kunt een Excel-blad ook meerdere keren dupliceren door een lus te gebruiken.

1234567891011121314 Sub CopySheetMultipleTimes()Dim n als geheel getalDim ik als geheel getalBij fout Hervatten volgenden = InputBox ("Hoeveel kopieën wilt u maken?")Als n > 0 DanVoor i = 1 tot nActiveSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count)VolgendeStop alsEinde sub

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave