Как скопировать и переместить лист с помощью vba?
Вы можете копировать и перемещать лист в Excel с помощью кода VBA, и в этом уроке мы изучим различные способы сделать это.
Копирование листа в той же книге
Если вы хотите скопировать лист в той же книге, вы можете использовать следующий код, в котором вы использовали метод копирования.
Sheets("Sheet5").Copy Before:=Sheets(1)
В этом коде лист1 является первым листом книги, и когда вы запускаете этот код, он копирует лист с именем «Лист5» перед первым листом книги.

И если вы хотите скопировать его после первого листа, код будет следующим.
Sheets("Sheet5").Copy After:=Sheets(1)
И если вы хотите скопировать его после первого листа, код будет следующим.
Sheets("Sheet5").Copy Before:=Sheets("Sheet3") Sheets("Sheet5").Copy After:=Sheets("Sheet3")
Когда вы запускаете этот код VBA, он копирует «Лист5» до и после «Лист3».

С помощью следующей строки кода вы можете скопировать лист после последнего листа книги. Он использует лист.count для получения количества листов, а затем использует счетчик для копирования последнего листа.
Sheets("myNewSheet").Move After:=Sheets(Sheets.Count)

Полезные ссылки: Запуск макроса – Средство записи макросов – Редактор Visual Basic – Персональный справочник по макросам
Скопируйте лист в той же книге с новым именем
А если вы хотите скопировать лист, а затем мгновенно переименовать его, вам нужно использовать свойство name, как в следующем коде.
Sheets("Sheet5").Move Before:=Sheets(1) ActiveSheet.Name = "myNewSheet"

Переместить лист в той же книге
Чтобы переместить лист в той же книге, вам нужно использовать метод перемещения, как в следующем коде.
Sheets("Sheet5").Move After:=Sheets(1)

Этот код переместит «Лист5» перед «Лист2», как вы можете видеть на снимке выше.
Копирование листа в новую книгу
Когда вы используете метод копирования без определения листа в текущей книге, VBA открывает новую книгу и копирует этот лист в эту книгу.
Sheets("Sheet5").Copy
И переместить лист в новую книгу.
Sheets("Sheet5").Move
Скопируйте несколько листов в новую книгу
Если вы хотите добавить в новую книгу одновременно несколько листов, используйте такой код.
Sheets(Array("Sheet2", "Sheet3", "Sheet4", "Sheet5")).Copy
Приведенный выше код создает массив листов, а затем копирует их все в новую книгу.
Копирование листа в другую книгу
Если вы хотите скопировать лист в другую уже открытую книгу, вы можете указать имя книги после или перед аргументом.
Sheets("Sheet1").Copy Before:=Workbooks("Book1.xlsx").Sheets(1)
Приведенный выше код копирует Sheet1 из активной книги и добавляет его перед первым листом Book1.xlsx, который уже открыт.
И если вы хотите его переместить.
Sheets("Sheet1").Move Before:=Workbooks("Book1.xlsx").Sheets(1)
Копирование листа в закрытую книгу
Есть способ скопировать лист в закрытую книгу, и вам не нужно ее открывать. Посмотрите на код ниже.
Sub vba_copy_sheet() Dim mybook As Workbook Application.ScreenUpdating = False Set mybook = _ Workbooks.Open _ ("C:UsersDellDesktopsamplefile.xlsx") Workbooks("Book1.xlsx").Sheets("Sheet2").Copy Before:=mybook.Sheets(1) mybook.Close SaveChanges:=True Application.ScreenUpdating = True End Sub
В этом коде у вас есть переменная myBook, а затем назначенная ей книга. Мы отключили обновление экрана, чтобы код мог выполнить задачу на серверной стороне.
Скопируйте лист из другой книги, не открывая его
Таким же образом вы можете скопировать и переместить лист из закрытой книги. Посмотрите на код ниже.
Sub vba_copy_sheet() Dim mybook As Workbook Application.ScreenUpdating = False Set mybook = _ Workbooks.Open _ ("C:UsersDellDesktopsamplefile.xlsx") mybook.Sheets("mySheet").Copy Before:=Workbooks("Book1.xlsx").Sheets(1) mybook.Close SaveChanges:=True Application.ScreenUpdating = True End Sub