Как скопировать и переместить лист с помощью 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».

код vba, если вы хотите скопировать его после первого листа

С помощью следующей строки кода вы можете скопировать лист после последнего листа книги. Он использует лист.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