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

В этом руководстве будет рассказано, как скопировать лист или рабочий лист с помощью VBA.

Копировать лист в новую книгу

Чтобы скопировать лист в новую книгу:

1 Листы ("Лист1"). Копировать

Копировать ActiveSheet в новую книгу

Чтобы скопировать ActiveSheet в новую книгу:

1 ActiveSheet.Copy

Копировать несколько листов в новую книгу

Чтобы скопировать несколько листов в новую книгу:

1 ActiveWindow.SelectedSheets.Copy

Копировать лист в той же книге

Мы начали с того, что показали вам самый простой пример копирования листов: копирование листов в новую рабочую книгу. Эти примеры ниже покажут вам, как скопировать лист в той же книге. При копировании листа в Worbook вы должны указать местоположение. Чтобы указать местоположение, вы скажете VBA переместить рабочий лист ДО или ПОСЛЕ другого рабочего листа.

Копировать лист перед другим листом

Здесь мы укажем копировать и вставлять Sheet перед 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 = "LastSheet"Конец подписки

Если имя листа уже существует, приведенный выше код вызовет ошибку. Вместо этого мы можем использовать «On Error Resume Next», чтобы указать VBA игнорировать именование листа и продолжить остальную часть процедуры:

12345678 Sub CopySheetRename2 ()Листы ("Sheet1"). Копировать после: = Sheets (Sheets.Count)При ошибке Возобновить ДалееActiveSheet.Name = "LastSheet"При ошибке GoTo 0Конец подписки

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

123456789101112131415161718 Sub CopySheetRename3 ()Если RangeExists ("LastSheet"), тоMsgBox «Лист уже существует».ЕщеЛисты ("Sheet1"). Копировать после: = Sheets (Sheets.Count)ActiveSheet.Name = "LastSheet"Конец, еслиКонец подпискиФункция RangeExists (WhatSheet как строка, необязательно ByVal WhatRange As String = "A1") как логическоеТусклый тест как диапазонПри ошибке Возобновить ДалееУстановите test = ActiveWorkbook.Sheets (WhatSheet) .Range (WhatRange)RangeExists = Номер ошибки = 0При ошибке GoTo 0Конечная функция

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

Вы также можете скопировать и назвать лист на основе значения ячейки. Этот код будет называть рабочий лист на основе значения ячейки в A1.

12345678 Sub CopySheetRenameFromCell ()Листы ("Sheet1"). Копировать после: = Sheets (Sheets.Count)При ошибке Возобновить ДалееActiveSheet.Name = Диапазон ("A1"). ЗначениеПри ошибке GoTo 0Конец подписки

Копировать лист в другую книгу

До сих пор мы работали с копированием таблиц в рабочую тетрадь. Теперь мы рассмотрим примеры копирования и вставки листов в другие рабочие книги. Этот код скопирует лист в начало другой книги:

1 Таблицы ("Sheet1"). Копировать перед: = Workbooks ("Example.xlsm"). Sheets (1)

Это скопирует рабочий лист в конец другой книги.

1 Таблицы ("Sheet1"). Копировать после: = Workbooks ("Example.xlsm"). Sheets (Workbooks ("Example.xlsm"). Sheets.Count)

Обратите внимание, мы заменили 1 с участием Рабочие книги («Example.xlsm»). Sheets.Count чтобы получить последний рабочий лист.

Копировать лист в закрытую книгу

Вы также можете скопировать рабочий лист в закрытую рабочую книгу. Этот код откроет закрытую рабочую книгу, чтобы вы могли скопировать в нее лист.

123456789 Sub CopySheetToClosedWB ()Application.ScreenUpdating = FalseУстановите closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ article \ example.xlsm")Таблицы ("Sheet1"). Копировать до: = closedBook.Sheets (1)closedBook.Close SaveChanges: = TrueApplication.ScreenUpdating = TrueКонец подписки

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

И наоборот, этот код скопирует рабочий лист ИЗ закрытой книги без необходимости вручную открывать книгу.

123456789 Sub CopySheetFromClosedWB ()Application.ScreenUpdating = FalseУстановите closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ article \ example.xlsm")closedBook.Sheets ("Sheet1"). Копировать перед: = ThisWorkbook.Sheets (1)closedBook.Close SaveChanges: = FalseApplication.ScreenUpdating = TrueКонец подписки

Обратите внимание, что в обоих этих примерах мы отключили ScreenUpdating, чтобы процесс работал в фоновом режиме.

Дублируйте лист Excel несколько раз

Вы также можете дублировать лист Excel несколько раз, используя цикл.

1234567891011121314 Sub CopySheetMultipleTimes ()Dim n как целое числоDim i как целое числоПри ошибке Возобновить Далееn = InputBox («Сколько копий вы хотите сделать?»)Если n> 0, тоДля i = 1 К nActiveSheet.Copy После: = ActiveWorkbook.Sheets (Worksheets.Count)СледующийКонец, еслиКонец подписки

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave