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

При организации данных в книгах нередко копировать листы из одной книги в другую. В самом деле, команду «Переместить» или «Копировать лист» (которая отображается при щелчке правой кнопкой мыши на вкладке рабочего листа) я использую довольно часто, и я готов поспорить, что другие используют ее так же часто.

Как же тогда копировать листы в макрос? Ответ – использовать метод копирования с отдельным листом или группой листов. Например, следующий код макроса скопирует текущий выбранный рабочий лист в новую книгу:

ActiveSheet.Copy

Вот и все; одна строка – это все, что нужно для копирования рабочего листа в новую, безымянную книгу. После выполнения строки будет выбрана новая книга, и вы можете сохранить ее, используя код, подобный приведенному ниже. Первая строка кода сохраняет книгу, а вторая закрывает ее.

ActiveWorkbook.SaveAs Filename: = «MyNewFile.xlsm», _ FileFormat: = xlOpenXMLWorkbookMacroEnabledActiveWindow.Close

Если вы хотите скопировать определенный лист в другую книгу, вы делаете это, указывая имя листа, который вы хотите скопировать, вместо использования объекта ActiveSheet:

Sheets («Sheet1 «) .Copy

В этом примере выполняется копирование листа с именем Sheet1 из коллекции Sheets в новую книгу. Затем вы можете сохранить новую книгу, как уже обсуждалось.

Метод копирования при использовании с листами не ограничивается копированием одного листа за раз. Если у вас выбрана группа листов, вы все равно можете использовать одну командную строку, чтобы скопировать их все в новую книгу. Вот что делается в этом макросе:

Sub CopyWorkbook () Dim sCopyName As String sCopyName = «My New Workbook.xlsm» SelectedSheets.Copy ActiveWorkbook.SaveAs Имя файла: = sCopyName, _ FileFormat: = xlOpenXMLWorkbookMacroEnabledEnd Sub

Обратите внимание на использование команды “Копировать”. Макрос будет работать независимо от того, выбран ли у вас один рабочий лист или пятьдесят; это не имеет значения. Если вы хотите скопировать все рабочие листы из одной книги в другую, все, что вам нужно сделать, это внести одно изменение в макрос в строке, где вызывается метод копирования:

Sheets. Копировать

Это копирует всю коллекцию Sheets, которая состоит из всех листов в книге.

Следует отметить, что метод Copy предназначен не только для копирования рабочие листы в новую рабочую тетрадь; его также можно использовать для копирования листов в той же книге. Единственное, что вам нужно сделать, это указать, где в текущей книге вы хотите сделать копию:

ActiveSheet.Copy After: = Sheets («Sheet7»)

Эта строка кода копирует активный рабочий лист в ту же книгу, чтобы он отображался после рабочего листа с именем Sheet7. Если это более соответствует вашим потребностям, вы можете вместо этого указать рабочий лист, перед которым должна быть размещена копия:

ActiveSheet. Копировать перед: = Sheets («Sheet7»)

В результате рабочий лист помещается перед Sheet7, а не после него.

Источник: frestage.ru

Бытовой вопрос