Создание, копирование, перемещение и удаление рабочих листов Excel с помощью кода VBA. Методы Sheets.Add, Worksheet.Copy, Worksheet.Move и Worksheet.Delete.
Создание новых листов
Создание новых рабочих листов осуществляется с помощью метода Sheets.Add.
Синтаксис метода Sheets.Add
expression.Add [Before, After, Count, Type]
где expression - переменная, представляющая собой объект Sheet.
Компоненты метода Sheets.Add
- Before* - необязательный параметр типа данных Variant, указывающий на лист, перед которым будет добавлен новый.
- After* - необязательный параметр типа данных Variant, указывающий на лист, после которого будет добавлен новый.
- Count - необязательный параметр типа данных Variant, указывающий, сколько листов будет добавлено (по умолчанию - 1).
- Type - необязательный параметр типа данных Variant, указывающий тип листа: xlWorksheet** (рабочий лист) или xlChart (диаграмма), по умолчанию - xlWorksheet.
*Если Before и After не указаны, новый лист, по умолчанию, будет добавлен перед активным листом.
**Для создания рабочего листа (xlWorksheet) можно использовать метод Worksheets.Add, который для создания диаграмм уже не подойдет.
Примеры создания листов
'Создание рабочего листа: Sheets.Add Worksheets.Add ThisWorkbook.Sheets.Add After:=ActiveSheet, Count:=2 Workbooks("Книга1.xlsm").Sheets.Add After:=Лист1 Workbooks("Книга1.xlsm").Sheets.Add After:=Worksheets(1) Workbooks("Книга1.xlsm").Sheets.Add After:=Worksheets("Лист1") 'Создание диаграммы: Sheets.Add Type:=xlChart 'Добавление нового листа перед 'последним листом рабочей книги Sheets.Add Before:=Worksheets(Worksheets.Count) 'Добавление нового листа в конец Sheets.Add After:=Worksheets(Worksheets.Count)
- Лист1 в After:=Лист1 - это уникальное имя листа, указанное в проводнике редактора VBA без скобок.
- Лист1 в After:=Worksheets(«Лист1») - это имя на ярлыке листа, указанное в проводнике редактора VBA в скобках.
Создаваемый лист можно присвоить объектной переменной:
Dim myList As Object 'В активной книге Set myList = Worksheets.Add 'В книге «Книга1.xlsm» Set myList = Workbooks("Книга1.xlsm").Worksheets.Add 'Работаем с переменной myList.Name = "Listok1" myList.Cells(1, 1) = myList.Name 'Очищаем переменную Set myList = Nothing
Если создаваемый лист присваивается объектной переменной, он будет помещен перед активным листом. Указать дополнительные параметры невозможно.
Копирование листов
Копирование рабочих листов осуществляется с помощью метода Worksheet.Copy.
Синтаксис метода Worksheet.Copy
expression.Copy [Before, After]
где expression - переменная, представляющая собой объект Worksheet.
Компоненты метода Worksheet.Copy
- Before* - необязательный параметр типа данных Variant, указывающий на лист, перед которым будет добавлена копия.
- After* - необязательный параметр типа данных Variant, указывающий на лист, после которого будет добавлена копия.
*Если Before и After не указаны, Excel создаст новую книгу и поместит копию листа в нее. Если скопированный лист содержит код в проекте VBA (в модуле листа), он тоже будет перенесен в новую книгу.
Примеры копирования листов
'В пределах активной книги '(уникальные имена листов) Лист1.Copy After:=Лист2 'В пределах активной книги '(имена листов на ярлычках) Worksheets("Лист1").Copy Before:=Worksheets("Лист2") 'Вставить копию в конец: Лист1.Copy After:=Worksheets(Worksheets.Count) 'Из одной книги в другую Workbooks("Книга1.xlsm").Worksheets("Лист1").Copy _ After:=Workbooks("Книга2.xlsm").Worksheets("Лист1") 'Один лист активной книги в новую книгу Лист1.Copy 'Все листы книги с кодом в новую книгу ThisWorkbook.Worksheets.Copy
Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.
Перемещение листов
Перемещение рабочих листов осуществляется с помощью метода Worksheet.Move.
Синтаксис метода Worksheet.Move
expression.Move [Before, After]
где expression - переменная, представляющая собой объект Worksheet.
Компоненты метода Worksheet.Move
- Before* - необязательный параметр типа данных Variant, указывающий на лист, перед которым будет размещен перемещаемый лист.
- After* - необязательный параметр типа данных Variant, указывающий на лист, после которого будет размещен перемещаемый лист.
*Если Before и After не указаны, Excel создаст новую книгу и переместит лист в нее.
Примеры перемещения листов
'В пределах активной книги '(уникальные имена листов) Лист1.Move After:=Лист2 'В пределах активной книги '(имена листов на ярлычках) Worksheets("Лист1").Move Before:=Worksheets("Лист2") 'Размещение после последнего листа: Лист1.Move After:=Worksheets(Worksheets.Count) 'Из одной книги в другую Workbooks("Книга1.xlsm").Worksheets("Лист1").Move _ After:=Workbooks("Книга2.xlsm").Worksheets("Лист1") 'В новую книгу Лист1.Move
Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.
Удаление листов
Удаление рабочих листов осуществляется с помощью метода Worksheet.Delete
Синтаксис метода Worksheet.Delete
expression.Delete
где expression - переменная, представляющая собой объект Worksheet.
Примеры удаления листов
'По уникальному имени Лист1.Delete 'По имени на ярлычке Worksheets("Лист1").Delete 'По индексу листа Worksheets(1).Delete 'В другой книге Workbooks("Книга1.xlsm").Worksheets("Лист1").Delete
Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.
Как обратиться к рабочему листу, переименовать, скрыть или отобразить его с помощью кода VBA Excel, смотрите в этой статье.