Kopírování listu Excel VBA
Občas možná budeme muset zkopírovat konkrétní rozsah buněk z jednoho listu do druhého nebo do stejného listu samotného. V některých případech možná budeme muset zkopírovat celý list do nového listu. Možná znáte kopírování řady buněk, ale co takhle zkopírovat celý samotný list pomocí VBA. V tomto článku vám poskytneme podrobné vysvětlení, jak zkopírovat list do jiného sešitu ve VBA.
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy_.jpg.webp)
Worksheet.Copy metoda ve VBA
Nejprve se podívejte na syntaxi metody Kopírování listu.
List (). Kopírovat (před, po)
Metoda kopírování obsahuje dva argumenty Před a po; oba jsou volitelné.
- Před: Cílený list, který kopírujeme. Pokud zadáte toto, nemůžete použít argument After .
- Po: Cílený list, který kopírujeme. Pokud zadáte toto, nemůžete použít argument Before .
Vzhledem k tomu, že se jedná o nepovinné argumenty, pokud jej necháte prázdné, bude cílený list zkopírován do nového sešitu, Microsoft Excel automaticky vytvoří nový sešit.
Nyní uvidíme příklady stejných v sekci příklady.
Příklady kopírování listu ve VBA
Příklad č. 1
Podívejte se například na níže uvedená data v listu s názvem „Leden“.
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__2.jpg.webp)
Výše uvedená data máme v listu s názvem „Leden“ .
- Musíme tedy zkopírovat výše uvedený list za list s názvem „ List1 “. Nejprve odkazujte na list pomocí objektu pracovních listů.
Kód:
Sub Worksheet_Copy_Example1 () Listy („leden“) Konec Sub
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__3.jpg.webp)
- Dále zadejte metodu „ Kopírovat “.
Kód:
Sub Worksheet_Copy_Example1 () Listy ("leden"). Kopie End Sub
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__4.jpg.webp)
- Jak vidíte výše, když začnete psát, nedostaneme seznam IntelliSense pro objekt pracovních listů, jedná se o jeden z významných problémů pro začátečníky, pokud přímo používají objekt WORKSHEETS, ale to lze eliminovat pomocí proměnných, takže definujte proměnná jako „ Pracovní list “.
Kód:
Sub Worksheet_Copy_Example1 () Dim Ws jako Work Sub End Sub
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__5.jpg.webp)
- Nyní pro tuto proměnnou nastavte odkaz na list „ Leden “.
Kód:
Sub Worksheet_Copy_Example1 () Dim Ws jako sada listů Ws = listy ("leden") End Sub
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__6.jpg.webp)
- Nyní tedy pomocí proměnné „ Ws “ můžeme snadno odkazovat na list s názvem „ Leden “. Zadejte tedy název proměnné „ Ws “ a zvolte metodu „ Copy “.
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__7.jpg.webp)
Tam jdeme, můžeme vidět seznam IntelliSense zobrazující všechny vlastnosti a metody objektů listu díky deklaraci proměnné.
- Vyberte metodu „ Kopírovat “ a uvidíme argumenty metody „ Kopírovat “.
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__8.jpg.webp)
- Protože musíme zkopírovat list za list „ List1 “, nejprve otevřete argument „ Po “ zadáním názvu argumentu, jak je uvedeno níže.
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__9.jpg.webp)
Poté, co je argument zvýrazněn, protože jsme použili název argumentu se symbolem „ rovná se definice “ (: =)
- Nyní zadejte název listu pomocí objektu „ Listy “.
Kód:
Dílčí list_Copy_Example1 () Dim Ws jako sada listů Ws = Listy ("leden") Ws.Copy After: = Listy ("List1") Konec Sub
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__10.jpg.webp)
- Jsme hotovi. Tím se zkopíruje list „ Leden “ po listu „ List1 “.
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__11.jpg.webp)
Tady máš, zkopírovali jsme lednový list napravo od „List1“. Jednou z výchozích věcí je, že název listu je stejný jako zkopírovaný list s číselným počtem listu v závorce, v tomto případě je to „(2)“.
- Chcete-li změnit název listu, přidejte do výše uvedeného kódu část kódu níže.
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__12.jpg.webp)
- So the overall code is below.
Code:
Sub Worksheet_Copy_Example1() Dim Ws As Worksheet Set Ws = Worksheets("January") Ws.Copy After:=Sheets("Sheet1") ActiveSheet.Name = “New Copied Sheet” End Sub
- Now run the code and see what happens.
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__13.jpg.webp)
Example #2
Similarly, if you want to copy the worksheet “Sheet1” before the worksheet “January” uses the below code.
Code:
Sub Worksheet_Copy_Example2() Dim Ws As Worksheet Set Ws = Worksheets("Sheet1") Ws.Copy Before:=Sheets("January") ActiveSheet.Name = "New Sheet1" End Sub
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__14.jpg.webp)
- So this will create a sheet-like the below.
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__15.jpg.webp)
Example #3
Similarly, if you want to copy the worksheet after the last worksheet then use the below code.
Code:
Sub Worksheet_Copy_Example3() Dim Ws As Worksheet Set Ws = Worksheets("January") Ws.Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = "Last Sheet" End Sub
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__16.jpg.webp)
Output:
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__17.jpg.webp)
The only change we made is we have used “Sheets. Count” method to count how many sheets are there in the workbook.
Example #4
Similarly, if you want to copy the worksheet before the first worksheet then use the below code.
Code:
Sub Worksheet_Copy_Example4() Dim Ws As Worksheet Set Ws = Worksheets("January") Ws.Copy After:=Sheets(1) ActiveSheet.Name = "First Sheet" End Sub
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__18.jpg.webp)
Output:
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__19.jpg.webp)
In this case, we have used “Sheets(1)” so this will place the worksheet copied before the first worksheet of the workbook.
Things to Remember
- Suppose you don’t use either Before & After argument of the Worksheet. Copy worksheets will be copied to the new workbook altogether.
- Výchozí zkopírovaný název listu bude stejný, následovaný počtem zkopírovaného listu.