Excel VBA Copy Worksheet
Понякога може да се наложи да копираме определен диапазон от клетки от един работен лист в друг или в самия същия работен лист. В някои случаи може да се наложи да копираме целия работен лист в нов работен лист. Може да сте запознати с копирането на набор от клетки, но какво ще кажете за копирането на целия работен лист с помощта на VBA. В тази статия ще ви дадем подробно обяснение как да копирате работния лист в друга работна книга във VBA.
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy_.jpg.webp)
Метод за работен лист. Копиране във VBA
Първо, разгледайте синтаксиса на метода за копиране на работен лист.
Работен лист (). Копиране (преди, след)
Методът Copy има два аргумента в него Before & After; и двете не са задължителни.
- Преди: Целевият работен лист, който копираме. Ако посочите това, не можете да използвате аргумент After .
- След: Целевият работен лист, който копираме. Ако посочите това, не можете да използвате аргумент Before .
Тъй като и двете са незадължителни аргументи, ако сте го оставили празно, тогава целевият работен лист ще бъде копиран в нова работна книга, Microsoft Excel автоматично създава нова работна книга.
Ще видим примери за същото сега в раздела за примери.
Примери за копиране на работен лист във VBA
Пример # 1
Например, погледнете данните по-долу в работния лист с име „Януари“.
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__2.jpg.webp)
Имаме горните данни в работния лист, наречен „Януари“ .
- И така, трябва да копираме горния работен лист след работния лист, наречен „ Sheet1 “. Първо се обърнете към работния лист, като използвате обекта на работни листове.
Код:
Sub Worksheet_Copy_Example1 () Worksheets ("January") End Sub
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__3.jpg.webp)
- След това въведете метода „ Копиране “.
Код:
Sub Worksheet_Copy_Example1 () Worksheets ("January"). Copy End Sub
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__4.jpg.webp)
- Както можете да видите по-горе, когато започнете да пишете, ние не виждаме обекта на IntelliSense за работни листове, това е един от значимите проблеми за начинаещи, ако те директно използват обект WORKSHEETS, но това може да бъде премахнато чрез използване на променливи, така че дефинирайте променлива като „ Работен лист “.
Код:
Sub Worksheet_Copy_Example1 () Dim Ws as Workheet End Sub
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__5.jpg.webp)
- Сега за тази променлива задайте референцията на работния лист „ Януари “.
Код:
Sub Worksheet_Copy_Example1 () Dim Ws as Worksheet Set Ws = Worksheets ("January") End Sub
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__6.jpg.webp)
- И така, сега, използвайки променливата „ Ws “, можем лесно да се обърнем към работния лист с име „ Януари “. Така че въведете името на променливата „ Ws “ и изберете метода „ Copy “.
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__7.jpg.webp)
Там отиваме, можем да видим списъка IntelliSense, показващ всички свойства и методи на обекти на работни листове, благодарение на декларацията на променливата.
- Изберете метода „ Копиране “ и ние можем да видим аргументи на метода „ Копиране “.
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__8.jpg.webp)
- Тъй като трябва да копираме работния лист след работния лист „ Sheet1 “, първо отворете аргумента „ After “, като въведете името на аргумента, както е показано по-долу.
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__9.jpg.webp)
След като аргументът е подчертан, тъй като сме използвали името на аргумента със символ „ равен по дефиниция “ (: =)
- Сега въведете името на листа, като използвате обекта „ Sheets “.
Код:
Sub Worksheet_Copy_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("January") Ws.Copy After: = Sheets ("Sheet1") End Sub
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__10.jpg.webp)
- Готови сме. Това ще копира работния лист „ Януари “ след работния лист „ Лист1 “.
![](https://cdn.know-base.net/6217028/vba_copy_worksheet_-_how_to_use_worksheetcopy__11.jpg.webp)
Ето, копирахме работен лист от януари вдясно от „Sheet1“. Едно от нещата по подразбиране тук е името на работния лист е същото като копирания лист с числов брой на работния лист в скобата, в този случай е „(2)“.
- За да промените името на работния лист, добавете парче код отдолу към горния код.
![](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.
- Името на копирания работен лист по подразбиране ще бъде същото, последвано от броя на този копиран работен лист.