VBA Копиране на лист / Копиране на лист в друга работна книга

Този урок ще обхваща как да копирате лист или работен лист с помощта на VBA.

Копиране на работен лист в нова работна книга

За да копирате работен лист в нова работна книга:

1 Листове ("Лист1"). Копиране

Копирайте ActiveSheet в нова работна книга

За да копирате ActiveSheet в нова работна книга:

1 ActiveSheet.Copy

Копирайте няколко листа в нова работна книга

За да копирате няколко листа в нова работна книга:

1 ActiveWindow.SelectedSheets.Copy

Копирайте лист в една и съща работна книга

Започнахме, като ви показахме най -простия пример за копиране на листове: копиране на лист (и) в нова работна книга. Тези примери по -долу ще ви покажат как да копирате лист в една и съща работна книга. Когато копирате лист в работна книга, трябва да посочите местоположение. За да посочите местоположение, ще кажете на VBA да премести работния лист ПРЕДИ или СЛЕД друг работен лист.

Копирайте лист преди друг лист

Тук ще посочим да копирате и поставите листа преди Sheet2

1 Листове ("Лист1"). Копиране преди: = Листове ("Лист2")

Копирайте лист преди първия лист

Вместо да посочите името на листа, можете също да посочите позицията на листа. Тук копираме и поставяме лист преди първия лист в работната книга.

1 Листове („Лист1“). Копиране преди: = Листове (1)

Новосъздаденият лист сега ще бъде първият лист в работната книга.

Копиране на лист след последния лист

Използвайте свойството After, за да кажете на VBA да постави листа СЛЕД друг лист. Тук ще копираме и поставим лист след последния лист в работната книга:

1 Листове ("Sheet1"). Копиране след: = Sheets (Sheets.Count)

Забележете, че използвахме Sheets.Count, за да преброим броя на листове в работната книга.

Преместване на лист

Можете също да преместите лист в работна книга, като използвате подобен синтаксис. Този код ще премести Sheet1 в края на работната книга:

1 Листове ("Sheet1"). Преместване след: = Sheets (Sheets.Count)

Копие и Именен лист

След копиране и поставяне на лист, новосъздаденият лист става ActiveSheet. Така че, за да преименувате нашия нов лист, просто използвайте ActiveSheet.Name:

123456 Sub CopySheetRename1 ()Листове ("Sheet1"). Копиране след: = Sheets (Sheets.Count)ActiveSheet.Name = "Последен лист"End Sub

Ако името на листа вече съществува, горният код ще генерира грешка. Вместо това можем да използваме „On Error Resume Next“, за да кажем на VBA да игнорира именуването на Sheet и да продължи с останалата част от процедурата:

12345678 Sub CopySheetRename2 ()Листове ("Sheet1"). Копиране след: = Sheets (Sheets.Count)На грешка възобновяване следващоActiveSheet.Name = "Последен лист"При грешка GoTo 0End Sub

Или използвайте нашата функция RangeExists, за да проверите дали името на листа вече съществува, преди да опитате да копирате листа:

123456789101112131415161718 Sub CopySheetRename3 ()Ако RangeExists ("LastSheet") ТогаваMsgBox "Листът вече съществува."ИначеЛистове ("Sheet1"). Копиране след: = Sheets (Sheets.Count)ActiveSheet.Name = "Последен лист"Край АкоEnd SubФункция RangeExists (WhatSheet As String, незадължително ByVal WhatRange As String = "A1") Като BooleanЗатъмняване като диапазонНа грешка възобновяване следващоЗадайте тест = ActiveWorkbook.Sheets (WhatSheet) .Range (WhatRange)RangeExists = Err.Number = 0При грешка GoTo 0Крайна функция

Копиране и лист с имена въз основа на стойността на клетката

Може също да искате да копирате и дадете име на лист въз основа на стойността на клетката. Този код ще даде име на работния лист въз основа на стойността на клетката в A1

12345678 Sub CopySheetRenameFromCell ()Листове ("Sheet1"). Копиране след: = Sheets (Sheets.Count)На грешка възобновяване следващоActiveSheet.Name = Обхват ("A1"). СтойностПри грешка GoTo 0End Sub

Копирайте работен лист в друга работна книга

Досега сме работили с копиране на таблици в работна книга. Сега ще разгледаме примери за копиране и поставяне на листове в други работни книги. Този код ще копира лист в началото на друга работна книга:

1 Листове ("Лист1"). Копиране преди: = Работни книги ("Пример.xlsm"). Листове (1)

Това ще копира работен лист в края на друга работна книга.

1 Листове ("Sheet1"). Копиране след: = Работни книги ("Example.xlsm"). Листове (Работни книги ("Example.xlsm"). Sheets.Count)

Забележете, че сме ги заменили 1 с Работни книги („Пример.xlsm“). Листове. Брой за да получите последния работен лист.

Копирайте работен лист в затворена работна книга

Може също да искате да копирате работен лист в затворена работна книга. Този код ще отвори затворена работна книга, така че да можете да копирате лист в нея.

123456789 Sub CopySheetToClosedWB ()Application.ScreenUpdating = FalseЗадайте closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")Листове („Лист1“). Копиране преди: = затворена книга. Листове (1)closedBook.Close SaveChanges: = ИстинаApplication.ScreenUpdating = ВярноEnd Sub

Копирайте лист от друга работна книга, без да я отваряте

Обратно, този код ще копира работен лист ОТ затворена работна книга, без да е необходимо ръчно да отваряте работната книга.

123456789 Sub CopySheetFromClosedWB ()Application.ScreenUpdating = FalseЗадайте closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")closedBook.Sheets ("Sheet1"). Копирай преди: = ThisWorkbook.Sheets (1)closedBook.Close SaveChanges: = FalseApplication.ScreenUpdating = ВярноEnd Sub

Забележете, че и в двата примера деактивирахме ScreenUpdating, така че процесът да работи във фонов режим.

Дублиране на Excel лист няколко пъти

Можете също така да дублирате лист на Excel няколко пъти, като използвате цикъл.

1234567891011121314 Sub CopySheetMultipleTimes ()Dim n като цяло числоDim i As IntegerНа грешка възобновяване следващоn = InputBox ("Колко копия искате да направите?")Ако n> 0 ТогаваЗа i = 1 To nActiveSheet.Copy After: = ActiveWorkbook.Sheets (Worksheets.Count)СледващияКрай АкоEnd Sub

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave