Создание, копирование, перемещение и удаление рабочих листов 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, который для создания диаграмм уже не подойдет.
Примеры создания листов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
‘Создание рабочего листа: 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») ‘Создание нового листа с заданным именем: Workbooks(«Книга1.xlsm»).Sheets.Add.Name = «Мой новый лист» ‘Создание диаграммы: Sheets.Add Type:=xlChart ‘Добавление нового листа перед ‘последним листом рабочей книги Sheets.Add Before:=Sheets(Sheets.Count) ‘Добавление нового листа в конец Sheets.Add After:=Sheets(Sheets.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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
‘В пределах активной книги ‘(уникальные имена листов) Лист1.Copy After:=Лист2 ‘В пределах активной книги ‘(имена листов на ярлычках) Worksheets(«Лист1»).Copy Before:=Worksheets(«Лист2») ‘Вставить копию в конец Лист1.Copy After:=Sheets(Sheets.Count) ‘Из одной книги в другую Workbooks(«Книга1.xlsm»).Worksheets(«Лист1»).Copy _ After:=Workbooks(«Книга2.xlsm»).Worksheets(«Лист1») ‘Один лист активной книги в новую книгу Лист1.Copy ‘Несколько листов активной книги в новую книгу* Sheets(Array(«Лист1», «Лист2», «Лист3»)).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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
‘В пределах активной книги ‘(уникальные имена листов) Лист1.Move After:=Лист2 ‘В пределах активной книги ‘(имена листов на ярлычках) Worksheets(«Лист1»).Move Before:=Worksheets(«Лист2») ‘Размещение после последнего листа: Лист1.Move After:=Sheets(Sheets.Count) ‘Из одной книги в другую Workbooks(«Книга1.xlsm»).Worksheets(«Лист1»).Move _ After:=Workbooks(«Книга2.xlsm»).Worksheets(«Лист1») ‘В новую книгу Лист1.Move |
Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.
Перемещение листа «Лист4» в позицию перед листом, указанным как по порядковому номеру, так и по имени ярлыка:
Sub Peremeshcheniye() Dim x x = InputBox(«Введите имя или номер листа», «Перемещение листа «Лист4»») If IsNumeric(x) Then x = CLng(x) Sheets(«Лист4»).Move Before:=Sheets(x) End Sub |
Удаление листов
Удаление рабочих листов осуществляется с помощью метода 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, смотрите в этой статье.
In this guide, we’re going to show you how to create and name a worksheet with VBA in Excel.
Download Workbook
Syntax
You can create and name a worksheet using the Sheets.Add and Worksheets.Add methods. Both methods work similarly and have 4 optional arguments and return a sheet object which can take a Name property.
Sheets.Add ([Before], [After], [Count], [Type])
Worksheets.Add ([Before], [After], [Count], [Type])
Name | Description |
Before | Optional. The sheet before which the new sheet is to be added. If omitted, Excel creates the new sheet(s) before the selected sheet(s). |
After | Optional. The sheet after which the new sheet is added. If omitted, Excel creates the new sheet(s) before the selected sheet(s). |
Count | The number of sheets to be added. The default is the number of selected sheets. |
Type | Specifies the sheet type. The default is xlWorksheet which represents a standard worksheet. |
Adding a single sheet
All arguments are optional. The method without arguments creates worksheet(s) equal to the number of selected worksheets before the first selected worksheet.
Sheets.Add
For example, if two sheets are selected, the method will add two worksheets. To ignore the selected sheets and set the sheet number to one (1), use 1 for the Count argument.
Sheets.Add Count:=1
Adding multiple sheets
You can set the Count argument to an integer greater than 1 to add multiple sheets at once. For example, the following code adds three (3) worksheets.
Sheets.Add Count:=3
Adding a sheet with a name
Sheets.Add method returns a sheet object and sets its name by updating the Name property. A property is an attribute of object that determines one of the object’s characteristics. The property of an object is addressed by entering the property name after the corresponding object and a dot(.). Just like calling the Add method for the Sheets object.
If all you need is to create worksheets and name them regardless of their position, use one of the following code lines.
Sheets.Add.Name = “My Sheet” Sheets.Add(Count:=1).Name = “My Sheet” ‘Use this line to ensure creating a single sheet
Adding a sheet before or after a specific sheet
If the new sheet’s position is important, use either the Before or After argument. Each argument accepts a sheet object. The new sheet will be created before or after the sheet you supplied based on the argument you are using.
You can call a sheet object by giving the sheet’s name or index to Sheets or Worksheets objects. It can be a variable which you have defined. Here are some examples:
Sheets.Add Before:=Worksheets("My Sheet") ‘Add sheet(s) before “My Sheet” Sheets.Add After:=Worksheets(3) ‘Add sheet(s) after the third sheet
Dim ws As Worksheet ‘Define a new worksheet object Set ws = Sheets.Add ‘Create and assign new sheet to the worksheet object Sheets.Add After:=ws ‘Add a new sheet after the recently added sheet (ws)
Creating and naming multiple worksheets
To name multiple worksheets, you have to use an array of names and a loop. Let’s say you have names in a range like A1:A5 in the worksheet named “Sheet1”. A loop should check each cell inside the range and create a worksheet from the corresponding name. Check out the following code:
Sub CreateAndNameMultipleSheets() Dim rng As Range 'Range object which defines a cell For Each rng In Sheets("Sheet1").Range("A1:A5") Sheets.Add.Name = rng.Value Next End Sub
This is our last tip for how to create and name a worksheet with VBA in Excel article. If you are new to loops in VBA, check out All You Need to Know on How to Create a VBA loop in Excel to understand and find more ways of looping.
Skip to content
Как добавить новый лист и присвоить имя
На чтение 2 мин. Просмотров 6.9k.
Что делает макрос: Самый простой вариант автоматизации — добавить новый лист с присвоением ему конкретного имени.
Содержание
- Как макрос работает
- Код макроса
- Как работает макрос
- Как использовать
Как макрос работает
Если вы владеете минимальными знаниями английского, то поймете, как работает этот макрос без подсказок.
Код макроса
Sub DobavitNoviiList() 'Шаг 1: Говорим Excel, что делать, если ошибка On Error GoTo MyError 'Шаг 2: Добавляем лист Sheets.Add 'Шаг 3: Присваиваем имя ActiveSheet.Name = "Отчет"_ WorksheetFunction.Text(Now(),"yyyy") 'Шаг 4: Выходим Exit Sub 'Шаг 5: Если произошла ошибка, сообщение пользователю MyError: MsgBox "Лист с таким именем уже есть!" End Sub
Как работает макрос
- Вы знаете, что если присвоить новому листу имя, которое уже есть, то возникнет ошибка. Таким образом, на шаге 1, макрос говорит Excel немедленно перейти к строке, которая говорит MyError (на шаге 3), если есть ошибка.
- Для создания листа используем метод Add. По умолчанию, лист называется SheetХХ, где хх представляет число листа. Мы даем листу новое имя путем изменения свойства объекта ActiveSheet.Name в этом случае мы именуем рабочий лист «Отчёт и текущий год».
- Как и в рабочих книгах, каждый раз, когда вы добавляете новый лист с помощью VBA, он автоматически становится активным. Именно поэтому мы пишем ActiveSheet.Name.
- Обратите внимание, что на шаге 4 мы выходим из процедуры. Делаем так, чтобы он случайно не показал сообщение об ошибке.
- Данный шаг запускается, если имя нового листа совпадает с уже существующим в книге. С помощью сообщения уведомляем пользователя об этом. Опять же, этот шаг должен быть выполнен только в случае возникновения ошибки.
Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
- Выберите Insert➜Module.
- Введите или вставьте код во вновь созданном модуле.
Работа в Excel — это всегда работа с листами.
Рабочий лист — это область, в которой находятся все ячейки для хранения данных, ввода формул, вставки диаграмм, создания отчетов и информационных панелей.
При открытии нового документа Excel, изначально в нем есть всего один лист. В предыдущих сборках Excel (2013 — 2016) этих листов было 3.
Существует такое понятие, как «горячие клавиши», они помогут вам быстро создавать новые листы в одном и том же файле Excel.
Эта статья призвана помочь вам и рассказать способы, существенно упрощающие создание новых листов в файле Excel.
Также продемонстрирую метод быстрого массового создания листов, например когда необходимо добавить сразу 30, 40 за один раз (используя Visual Basic).
Что ж, давайте приступим!
В этом уроке рассматриваются:
- Горячие клавиши для создания листа;
- Вставка листа, используя знак «+»;
- Добавление листа используя окно «Вставка»;
- Создание листов путем использования функции «Вставка» в меню;
- Массовая вставка листов (используя Visual Basic);
- Редактирование стандартного параметра «Число листов».
Содержание
- Горячие клавиши для создания листа
- Вставка листа используя знак «+»
- Добавление листа используя окно «Вставка»
- Создание листов путем использования функции «Вставка» в меню
- Массовая вставка листов (используя Visual Basic)
- Подробные пошаговые действия для использования:
- Редактирование стандартного параметра «Число листов»
Горячие клавиши для создания листа
В случае, если вы любите функции горячих клавиш в приложениях, то этот способ для вас. По моему мнению, это самый лучший вариант создавать листы.
Далее продемонстрированы горячие клавиши для создания листа:
SHIFT + F11
Быстрая клавиша для добавления нового листа
Чтобы использовать это сочетание клавиш, зажмите кнопку SHIFT и после нажмите клавишу F11.
Другой вариант горячих клавиш, выполняющий эту же функцию — ALT + SHIFT + F1 (зажмите кнопки ALT и SHIFT и нажмите клавишу F1).
На мой взгляд, использование горячих клавиш — самый эффективный и быстрый вариант создать новый лист в Excel. Даже в той ситуации, когда нужно создать сразу несколько листов (например, 15, 20). Все равно благодаря этому методу можно делать это очень быстро!
Вставка листа используя знак «+»
В случае если, вам не по душе «горячие клавиши», а наоборот, больше предпочитаете мышь, то вам понравится следующий вариант. В нижней части окна Excel (где написаны названия всех листов) находится знак «+».
При нажатии на него, программа сразу же создаст новый лист.
Добавление листа используя окно «Вставка»
Вот еще один вариант создать новый лист в Excel — использование окна «Вставка». Далее описаны пошаговые действия:
- Нажмите правой кнопкой мышки на иконку любой из существующих страниц;
- Выберите функцию «Вставить»;
3. В открывшемся окне проверьте, что объект “Лист” выделен (стандартный вариант);
4. Подтвердите.
На мой взгляд, это не самый удобный вариант добавить новый лист, однако необходимо уметь им пользоваться, потому что таким образом можно создавать и другие объекты.
Помимо добавления обычного листа, можно использовать этот способ для создания «Листа макросов» и «Листа диаграмм» при помощи окна «Вставка».
На будущее, «Лист макросов» на данный момент стал пережитком прошлого, им пользовались ранее, до появления Visual Basic. А «Лист диаграмм» это такая же страница, как и обычный лист, только она хранит в себе диаграммы.
Если вы не хотите освоить Excel на максимум, то скорее всего эти знания будут вам не нужны, но все же полезно уметь создавать и такие листы.
Еще во «Вставке» есть кнопка «Решения», где содержатся готовые шаблоны листов. Также здесь можно выбирать свои уже готовые макеты страниц, которые вы создали. Поэтому, если в будущем, вам понадобится использовать готовый макет листа, можно открыть его из данной вкладки.
Создание листов путем использования функции «Вставка» в меню
Напоследок, в меню Excel также можно использовать функцию «Вставка».
Чтобы её использовать:
1. Откройте раздел «Главная»;
2. В разделе Ячейки откройте функцию «Вставить»;
3. Используйте «Вставить лист».
Эта функция создаст один лист.
Массовая вставка листов (используя Visual Basic)
Все рассмотренные ранее методы позволяли создать лишь один лист за раз.
Если вам нужно создать сразу несколько новых листов, вам необходимо будет эксплуатировать эти способы несколько раз (грубо говоря, нажимать горячие клавиши или нажимать на знак «+» столько раз, сколько необходимо создать новых страниц).
Если количество листов до 10, то это не сложно и нет особого смысла использовать более сложные методы, но если нужно создать большое количество страниц, например, 40, 50, то это не очень то и удобно.
Поэтому сейчас я покажу вам быстрейший метод создания любого количества страниц за пару кликов мышки.
Мы будем делать это используя данный код для Visual Basic в Excel:
Sheets.Add Count:=25
Данная функция буквально за секунду создаст 25 новых листов в файле Excel (можно создать любое число страниц, для этого поменяйте цифру «25» в функции).
Подробные пошаговые действия для использования:
1. Нажмите на раздел «Разработчик»;
- Откройте функцию «Visual Basic» (можно открыть с помощью горячих клавиш ALT + F11);
3. Не видите окна «Immediate» в редакторе? Тогда нажмите на вкладку «View» и после нажмите «Immediate Window» (можно открыть с помощью горячих клавиш CTRL + G);
4. Пропишите в строке формулу, написанную нами ранее;
5. Наведите указатель мышки в конец самой функции и нажмите «Enter».
Когда вы подтвердите выполнение, функция сразу же создаст 25 рабочих листов. Когда будет необходимо создать еще (40 или 50), поменяйте «25» на нужную цифру.
Достоинство данного метода в том, что функция создаст ровно то количество листов, которое вы указали цифрой. Ошибка здесь исключена.
Если необходимо создавать большое количество листов постоянно, то можно выполнить приведенную далее функцию и поместить её в «Personal Macro».
Sub AddSheets()
Sheets.Add Count:=25
End Sub
Это личная книга уже созданных вами макросов, можно добавить ее на панель инструментов быстрого доступа, тогда она постоянно будет под рукой.
Этим способом можно очень быстро добавить любое количество новых листов в пару кликов мышки.
Редактирование стандартного параметра «Число листов»
Когда часто требуется больше листов, неплохой вариант поменять число листов по стандарту, которые автоматически появляются, когда вы создаете новый документ Excel.
Например, можно изменить параметр таким образом, чтобы при создании каждого нового документа Excel всегда было 15, 20 листов.
Далее пошагово описаны действия для изменения этой настройки:
1. Откройте раздел «Файл»;
2. Откройте окно «Параметры»;
3. В открывшемся окне «Параметры Excel» у вас должен быть выбран раздел «Общие»;
4. В параметре «Число листов» укажите количество;
5. Подтвердите.
Сейчас, если откроете только созданный документ, в нем сразу будет нужное вам число рабочих листов.
Не забудьте, максимум в документе может быть 255 листов.
Я продемонстрировал существующие методы для создания новых листов в Excel. Чаще всего, в процессе работы, необходимо создавать небольшое количество рабочих листов. Если так, то удобнее всего будет пользоваться горячими клавишами или знаком «+».
Когда необходимо создать большое количество листов, пользуйтесь вариантом с Visual Basic. Также, можно просто поменять стандартное число листов при создании новых документов Excel.
Надеюсь вам помогло данное руководство!
Автор: Sumit Bansal
Перевод: редакция ExcelExcel.ru
danny41 1 / 1 / 0 Регистрация: 14.06.2011 Сообщений: 71 |
||||
1 |
||||
Как создать новый лист и импортировать данные с другого листа на новый лист07.07.2011, 08:42. Показов 8325. Ответов 4 Метки нет (Все метки)
как создать новый лист и импортировать данные с другого листа на новый лист.
0 |
Gibboustooth 735 / 203 / 11 Регистрация: 23.06.2011 Сообщений: 440 |
||||
07.07.2011, 09:44 |
2 |
|||
Вставит новый лист в конце книги.
1 |
danny41 1 / 1 / 0 Регистрация: 14.06.2011 Сообщений: 71 |
||||
07.07.2011, 11:19 [ТС] |
3 |
|||
Вставит новый лист в конце книги. [лист, с которого копируют] писать название книги.xls и [Книга].Sheets([Книга].Sheets.Count) <- писать название куда копировать книги.xls и куда ставлять этот код? Добавлено через 1 час 30 минут
0 |
695 / 236 / 18 Регистрация: 17.01.2011 Сообщений: 583 Записей в блоге: 1 |
|
07.07.2011, 12:21 |
4 |
Включи запись макроса и запиши код..
1 |
Gibboustooth 735 / 203 / 11 Регистрация: 23.06.2011 Сообщений: 440 |
||||
07.07.2011, 12:27 |
5 |
|||
[лист, с которого копируют] писать название книги.xls и [Книга].Sheets([Книга].Sheets.Count) <- писать название куда копировать книги.xls Нет, там должна быть переменная листа, а книга — должна быть переменная книги. Чтобы задать переменные сделайте:
1 |