В этом примере детально описана и разобрана автоматизация копирования и переименования листов Excel с исходными кодами макросов.
Как копировать и переименовать лист Excel макросом
Представьте ситуацию: Вы готовите планы работ для сотрудников определенного отдела фирмы. Пример таблицы плана выглядит так:
Руководитель этого отдела пожелал, чтобы названия листов планов работ для каждого сотрудника содержали их имена и фамилии.
Многократное копирование листов шаблона для составления и заполнения планов работ сотрудников с переименованием, потребует много времени и сил если делать все это вручную. Поэтому напишем свой макрос, который упростит данную задачу.
Техническое Задание (ТЗ) для макроса заключается в следующем. После выделения ячеек, которые содержат названия для листов нужно скопировать лист с шаблоном для планов работ ровно столько сколько будет выделенных ячеек и ввести соответствующие названия в ярлычки.
Примечание. В программировании, как и в многих других технических сферах деятельности (например, в бизнес-планировании) – без ТЗ результат ХЗ! Автор цитаты известный бизнесмен и предприниматель Дмитрий Потапенко.
Для этого сначала откройте редактор кода макроса: «РАЗРАБОТЧИК»-«Код»-«Visual Basic» (ALT+F11):
В редакторе создайте новый модуль выбрав инструмент «Insert»-«Module» и введите в него следующий код макроса:
Sub PlanRabot()
Dim diapaz As Range
Dim i As Long
Dim list As Worksheet
On Error Resume Next
Set diapaz = Application.InputBox("Пожалуйста, выделите диапазон ячеек, который содержит названия для новых листов!", Type:=8)
On Error GoTo 0
If diapaz Is Nothing Then Exit Sub
Set list = ActiveSheet
For i = 1 To diapaz.Count
list.Copy after:=ActiveSheet
ActiveSheet.Name = Left(diapaz(i), 31)
Next
End Sub
Теперь если вы хотите скопировать лист шаблона для заполнения плана работ и создать копии плана для каждого сотрудника имена с фамилиями которых будут присвоены названиям листа, то перейдите на исходный лист с шаблоном плана работ и выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«PlanRabot»-«Выполнить». Сразу же после запуска макроса появиться диалоговое окно:
Теперь перейдите на лист «Имена и Фамилии» и выделите в нем диапазон ячеек, которые содержат имена и фамилии сотрудников. И нажмите на кнопку ОК.
В результате чего макрос сам автоматически скопирует планы работ для каждого сотрудника и присвоит новым листам соответственные имена и фамилии.
Описание исходного кода макроса для копирования и переименования листов
В начале кода макроса вызываем диалоговое окно для выделения диапазона ячеек на рабочем листе Excel и присвоения адреса диапазона в качестве значения для поля ввода данного диалогового окна.
Перед вызовом инструкции открытия диалогового окна отключается контроль ошибок. А после создания экземпляра объекта Range в переменной diapaz, снова включается контроль ошибок. Сделано так потому, что нажатие на кнопку «Отмена» в диалоговом окне вызовет ошибку выполнения макроса. Если же отключить обработку ошибок то, когда пользователь нажмет на кнопку «Отмена», тогда просто не будут выполняться никакие инструкции макроса.
В случаи если пользователь заполнил поле ввода и нажал на кнопку «ОК», тогда в переменную list присваиваться текущий рабочий лист. После чего внутри цикла он копируется ровно столько раз, сколько было выделено ячеек.
В процессе копирования каждому новому листу присваивается имя, которое берется из значения текущей ячейки из предварительно выделенного диапазона. Текст в ячейках обрезается до 31 символов, так как максимальная длинна наименования листа не может содержать более чем 31 символ.
Если необходимо сделать так чтобы соответственные имена и фамилии сотрудников были не только на ярлычках листов, а и в значении ячейки B1 в каждом листе, тогда перед строкой конца цикла Next добавьте следующую строку кода:
ActiveSheet.Range(«B1») = diapaz(i)
Подобным способом можно вводить имена и названия для других ячеек листа. Достаточно указать желаемый адрес ячейки в кавычках.
Версия кода макроса с дополнительной строкой кода выглядит так:
Sub PlanRabot()
Dim diapaz As Range
Dim i As Long
Dim list As Worksheet
On Error Resume Next
Set diapaz = Application.InputBox("Пожалуйста, выделите диапазон ячеек, который содержит названия для новых листов!", Type:=8)
On Error GoTo 0
If diapaz Is Nothing Then Exit Sub
Set list = ActiveSheet
For i = 1 To diapaz.Count
list.Copy after:=ActiveSheet
ActiveSheet.Name = Left(diapaz(i), 31)
ActiveSheet.Range("B1") = diapaz(i)
Next
End Sub
Пример вставки имен и фамилий не только в ярлычки листов, а и в их определенные пользователем ячейки:
Читайте также: Макрос для копирования листов Excel с заданным количеством копий.
Таким образом, благодаря макросу в пару кликов мышкой можно выполнить большой объем работы. В данном примере скопировано копий только для 8-ми сотрудников. Особенно ощутимую пользу приносит данный макрос при необходимости копировать большое количество листов. Ведь в некоторых фирмах количество сотрудников, заполняющих планы работы, может превышать 100 человек и более.
Обращение к рабочим листам Excel из кода VBA. Переименование листов, скрытие и отображение с помощью кода VBA Excel. Свойства Worksheets.Name и Worksheets.Visible.
Обращение к рабочим листам
Рабочий лист (Worksheet) принадлежит коллекции всех рабочих листов (Worksheets) книги Excel. Обратиться к листу можно как к элементу коллекции и, напрямую, по его уникальному имени.
Откройте редактор VBA и обратите внимание на вашу книгу в проводнике, где уникальные имена листов указаны без скобок, а в скобках — имена листов, отображаемые на ярлычках в открытой книге Excel. Уникальные имена листов отсортированы по алфавиту и их расположение по порядку не будет соответствовать их индексам (номерам), если листы перемещались по отношению друг к другу. Индексы листов смотрите по порядку расположения ярлычков в открытой книге. Переместили листы — изменились их индексы.
Обращение к рабочему листу в коде VBA Excel:
‘По уникальному имени УникИмяЛиста ‘По индексу Worksheets(N) ‘По имени листа на ярлычке Worksheets(«Имя листа») |
- УникИмяЛиста — уникальное имя листа, отображаемое в проводнике редактора VBA без скобок, с помощью кода VBA изменить его невозможно.
- N — индекс листа от 1 до количества всех листов в книге, соответствует порядковому номеру ярлычка этого листа в открытой книге Excel.
- Имя листа — имя листа, отображаемое в проводнике редактора VBA в скобках, с помощью кода VBA изменить его можно.
Количество листов в рабочей книге Excel определяется так:
‘В активной книге Worksheets.Count ‘В любой открытой книге, ‘например, в «Книга1.xlsm» Workbooks(«Книга1.xlsm»).Worksheets.Count |
Переименование листов
В VBA Excel есть некоторые особенности в наименовании листов, так как у рабочего листа есть два свойства, связанных с именем: (Name) и Name. Откройте окно «Properties» в редакторе VBA, нажав клавишу «F4», и выделите любой лист в проводнике. Вы увидите, что в окне «Properties» свойству (Name) в скобках соответствует в проводнике уникальное имя листа без скобок, а свойству Name без скобок соответствует изменяемое имя листа в скобках. Оба имени в окне «Properties» можно редактировать.
С помощью кода VBA Excel можно редактировать только имя листа Name, отображаемое на ярлычке листа и в проводнике без скобок. Для этого используется свойство рабочего листа Worksheets.Name со следующим синтаксисом:
expression.Name
где expression — переменная, представляющая собой объект Worksheet. Смена имени осуществляется путем присвоения нового значения свойству Worksheets.Name.
Допустим, у нас есть лист с уникальным именем (Name) — Лист1, индексом — 1 и именем Name — МойЛист, которое необходимо заменить на имя — Реестр.
Лист1.Name = «Реестр» Worksheets(1).Name = «Реестр» Worksheets(«МойЛист»).Name = «Реестр» |
Скрытие и отображение листов
Для скрытия и отображения рабочих листов в VBA Excel используется свойство Worksheet.Visible со следующим синтаксисом:
expression.Visible
где expression — переменная, представляющая собой объект Worksheet. Свойству Worksheet.Visible могут присваиваться следующие значения:
- False — лист становится невидимым, но он будет присутствовать в списке скрытых листов, и пользователь сможет его отобразить с помощью инструментов рабочей книги Excel.
- xlVeryHidden — лист становится супер невидимым и его не будет в списке скрытых листов, пользователь не сможет его отобразить. Актуально для Excel 2003-2016.
- True — лист становится видимым.
Аналоги присваиваемых значений:
- False = xlHidden = xlSheetHidden = 1
- xlVeryHidden = xlSheetVeryHidden = 2
- True = xlSheetVisible = -1 (константа xlVisible вызывает ошибку)
Примеры:
Лист1.Visible = xlSheetHidden Лист2.Visible = —1 Worksheets(Worksheets.Count).Visible = xlVeryHidden Worksheets(«МойЛист»).Visible = True |
Как создать, скопировать, переместить или удалить рабочий лист с помощью кода VBA Excel, смотрите в этой статье.
marker_mc Пользователь Сообщений: 228 |
#1 01.02.2013 11:52:37 Всем добрый день.
Прикрепленные файлы
Изменено: marker_mc — 01.02.2013 11:56:53 |
||
SkyShark Пользователь Сообщений: 71 |
#2 01.02.2013 11:59:28 Можно заменить
на
Это код согласно прописанному в файле. Изменено: SkyShark — 01.02.2013 12:01:29 |
||||
marker_mc Пользователь Сообщений: 228 |
О!!! Класс)) спасибо Вам, только я в конце добавил еще минус 1, чтоб нумерация начиналась с первого. Большое спасибо за оперативность |
marker_mc Пользователь Сообщений: 228 |
#4 01.02.2013 12:23:01 конечный итог приобрёл такой вид:
|
||
каник Пользователь Сообщений: 1 |
Нужна помощь срочно, буду крайне признателен. Нужен макрос для массовой переименовки названия листов. |
Казанский Пользователь Сообщений: 8839 |
#6 24.05.2015 09:06:14
|
||
- Переименовать лист в Excel VBA
Переименовать лист в Excel VBA
Переименование любого листа Excel так же просто, как переименование любого файла. Это можно сделать, дважды щелкнув по имени любого листа или выбрав «Переименовать» в правом списке меню. Но что, если мы хотим переименовать лист Excel с помощью макроса VBA. С помощью VBA Macro мы можем переименовать один или несколько рабочих листов Excel за один раз. Мы даже можем исправить имя любого листа, чтобы никто не мог его изменить. Здесь мы увидим несколько способов переименования любого листа.
Как переименовать лист в Excel, используя VBA?
Ниже приведены различные примеры переименования листов в Excel с использованием кода VBA.
Вы можете скачать этот шаблон Excel для VBA Rename Sheet здесь — Шаблон для VBA Rename Sheet Excel
VBA Rename Sheet — Пример № 1
Хотя с помощью VBA очень легко переименовать любой лист Excel. Есть много способов сделать это также. Здесь имя нашего рабочего листа по умолчанию установлено как «Лист1», как показано ниже, которое мы будем переименовывать.
Шаг 1: Для этого примера нам понадобится модуль, в котором мы будем выполнять кодирование. Перейдите в меню « Вставка» и выберите « Модуль», как показано ниже.
Шаг 2: Теперь во вновь открытом модуле напишите подкатегорию на имя VBA Rename Sheet или на любое другое имя.
Код:
Sub VBA_RenameSheet () End Sub
Шаг 3: Теперь определите переменную для любого имени и назначьте ее с типами данных Worksheet, как показано ниже. Здесь мы назвали его « Лист ».
Код:
Sub VBA_RenameSheet () Dim Sheet As Worksheet End Sub
Шаг 4: С помощью команды Set выберите Sheet variable, как показано ниже.
Код:
Sub VBA_RenameSheet () Dim Sheet As Sheets Set Sheet = End Sub
Шаг 5: И выберите Рабочий лист, который нам нужно переименовать, с помощью команды Рабочий лист .
Код:
Sub VBA_RenameSheet () Dim Sheet As Sheets Set Sheet = Worksheets ("Sheet1") End Sub
Шаг 6: Теперь используйте функцию Sheet вместе с Name и назначьте имя, которое мы хотим переименовать. Здесь мы выбираем « Переименованный лист ».
Код:
Sub VBA_RenameSheet () Dim Sheet As Sheets Set Sheet = Worksheets ("Sheet1") Sheet.Name = "Переименованный лист" End Sub
Шаг 7: Теперь, наконец, скомпилируйте код и запустите его, если обнаружена ошибка. Для запуска кода нажмите на кнопку Play, расположенную под строкой меню, как показано ниже. Мы увидим, что наш лист будет переименован из Sheet1 в Renamed Sheet, как показано ниже.
VBA Rename Sheet — Пример № 2
В этом примере мы увидим гораздо более простой способ переименования любого рабочего листа с помощью макроса VBA. Для этого нам понадобится еще один свежий модуль.
Шаг 1: Откройте модуль и напишите подкатегорию VBA Rename, как показано ниже.
Код:
Sub VBA_RenameSheet1 () End Sub
Шаг 2: Выберите Лист, который мы хотим переименовать с помощью функции Выбрать . Здесь наш лист Sheet1 .
Код:
Sub VBA_RenameSheet1 () Sheets ("Sheet1"). Выберите End Sub
Шаг 3: В следующей строке рассмотрите функцию Name с выбранным листом, как показано ниже.
Код:
Sub VBA_RenameSheet1 () Sheets ("Sheet1"). Выберите Sheets ("Sheet1"). Name = End Sub
Шаг 4: Выберите имя, которое мы хотим дать после переименования листа. Мы выбираем то же имя, что и в примере 1, как « Переименованный лист ».
Sub VBA_RenameSheet1 () Sheets ("Sheet1"). Выберите Sheets ("Sheet1"). Name = "Renamed Sheet" End Sub
Шаг 5: Снова скомпилируйте код и запустите его. Мы увидим, что sheet1 будет переименован с новым именем как « Renamed Sheet ».
VBA Rename Sheet — Пример № 3
Существует еще один аналогичный способ переименования листа Excel с помощью VBA. Это выглядело бы немного похожим на процесс, который мы видели в примере 2, но намного легче запомнить и обработать.
Шаг 1: Откройте модуль и напишите новую подкатегорию VBA Rename Sheet, как показано ниже.
Код:
Sub VBA_RenameSheet2 () End Sub
Шаг 2: Выберите лист, который мы хотим переименовать. Здесь мы можем выбрать лист, поместив последовательность листов в скобки, как показано ниже. Таким образом, нам не нужно писать имя листа для переименования. Только последовательность этого листа будет работать.
Код:
Sub VBA_RenameSheet2 () Sheets (1). Выберите End Sub
Шаг 3: В следующей строке рассмотрите функцию Name с выбранной последовательностью листов, как показано ниже.
Код:
Sub VBA_RenameSheet2 () Sheets (1). Выбрать Sheets (1) .Name = End Sub
Шаг 4: Теперь введите имя, которое мы хотим дать выбранному Листу1. Давайте рассмотрим имя, которое мы видели в приведенных выше примерах, как « переименованный лист ».
Код:
Sub VBA_RenameSheet2 () Sheets (1). Выбрать Sheets (1) .Name = "renamed Sheet" End Sub
Шаг 5: Теперь снова скомпилируйте код и запустите. Мы заметим, что Sheet1 теперь снова переименован в «r enamed Sheet », как показано ниже.
VBA Rename Sheet — Пример № 4
В этом примере мы увидим, как переименовать любой лист с помощью только одной строки кода.
Шаг 1: Откройте модуль и напишите подкатегорию VBA Rename Sheet, как показано ниже.
Код:
Sub VBA_RenameSheet3 () End Sub
Шаг 2: Выберите последовательность листов, которую мы хотим переименовать вместе с функцией Name, и дайте имя, по которому мы хотим переименовать этот лист, как показано ниже.
Код:
Sub VBA_RenameSheet3 () Sheets (1) .Name = "переименовать лист" End Sub
Шаг 3: Теперь просто запустите код для его реализации. Мы снова заметим, что Sheet1 теперь переименован в « rename Sheet »
Плюсы Excel VBA Переименовать Лист
- Если у нас есть несколько листов, которые нужно переименовать, тогда использование кода VBA намного лучше, чем ручной процесс.
- Мы можем изменить имя любого рабочего листа Excel одной строкой кода VBA, который мы видели в примере 4.
- Хотя изменение названия любого листа вручную также является простым способом сделать это. Но VBA Rename Sheet весьма полезна, когда мы создаем новый лист, и мы хотим отделить его от других листов, чтобы классифицировать его.
То, что нужно запомнить
- Чтобы получить лучшее представление о происходящих изменениях, держите окно VBA параллельно листу Excel, чтобы изменение имени листа было ясно видно.
- Сохранение файла после выполнения работы в формате Macro enable позволит нам сохранить код и для дальнейшей работы.
- Автоматизация процесса изменения имени листа поможет нам сократить время классификации листов и данных.
Рекомендуемые статьи
Это руководство к VBA Rename Sheet. Здесь мы обсудим, как переименовать лист в Excel, используя код VBA, а также несколько практических примеров и загружаемый шаблон Excel. Вы также можете просмотреть наши другие предлагаемые статьи —
- Полное руководство по VBA Workbook
- НЕПРАВИЛЬНАЯ функция в Excel
- Учебники по функции подсчета VBA
- Как использовать функцию Excel XOR?
Содержание
- Требования к именам листов
- Процесс переименования
- контекстное меню ярлыка
- двойной щелчок по ярлыку
- Как переименовать лист рабочей книги при помощи мыши?
- Вставка нового листа в Excel
- Обращение к рабочим листам
- Скрытие и отображение листов
- Описание задачи
- Как копировать и переименовать лист Excel макросом
- Перемещение/копирование листов в Excel
- Как сменить название листа
- Как изменить имя листа при помощи контекстного меню?
- Удаление листа в Excel
Требования к именам листов
К именам листов рабочей книги предъявляется несколько ограничений:
1) длина введенного имени не должна превышать 31-го знака;
2) имя листа не должно содержать ни одного из следующих знаков: двоеточи” ( : ), косая черта ( / ), вопросительный знак ( ? ), звездочка ( * ) и квадратные скобки ( [ ] );
3) имя не должно быть пустым.
Процесс переименования
Процедура переименования листов в Экселе в целом интуитивно понятна. Тем не менее, у некоторых пользователей, которые только начинают освоение программы, возникают определенные трудности.
Прежде, чем перейти непосредственно к описанию способов переименования, выясним, какие названия давать можно, а присвоение каких будет некорректным. Имя может быть присвоено на любом языке. При его написании можно использовать пробелы. Что же касается основных ограничений, то следует выделить следующие:
- В наименовании не должны присутствовать такие символы: «?», «/», «», «:», «*», «[]»;
- Название не может быть пустым;
- Общая длина наименования не должна превышать 31 знак.
При составлении имени листа нужно учитывать вышеуказанные правила. В обратном случае программа не даст завершить данную процедуру.
контекстное меню ярлыка
Наиболее интуитивно понятный способ переименования – это воспользоваться возможностями, которые предоставляет контекстное меню ярлыков листов, расположенных в левой нижней части окна приложения сразу над строкой состояния.
- Кликаем правой кнопкой по ярлыку, над которым хотим произвести манипуляцию. В контекстном меню выбираем пункт «Переименовать».
- Как видим, после этого действия поле с названием ярлыка стало активным. Просто набираем туда с клавиатуры любое подходящее по контексту наименование.
- Жмем на клавишу Enter. После этого листу будет присвоено новое имя.
двойной щелчок по ярлыку
Существует и более простой способ переименования. Нужно просто кликнуть двойным щелчком по нужному ярлыку, правда, в отличие от предыдущего варианта, не правой кнопкой мыши, а левой. При использовании данного способа никакого меню вызывать не нужно. Наименование ярлыка станет активным и готовым к переименованию. Вам останется только набрать нужное название с клавиатуры.
Как переименовать лист рабочей книги при помощи мыши?
Для переименования листа необходимо:
1) в окне открытой книги дважды щелкнуть левой кнопкой мыши на ярлычке нужного листа;
2) набрать нужное имя листа, соблюдая требования к листам, изложенные выше;
3) нажать клавишу Enter на клавиатуре для закрепления введенного имени.
- Чтобы вставить новый рабочий лист, найдите и нажмите кнопку Новый лист.
- Откроется новый пустой лист.
Для того чтобы изменить количество листов, открываемых по умолчанию в новой книге Excel, перейдите к представлению Backstage, нажмите Параметры, затем выберите количество листов, которые необходимо включать в каждую новую книгу.
Обращение к рабочим листам
Рабочий лист (Worksheet) принадлежит коллекции всех рабочих листов (Worksheets) книги Excel. Обратиться к листу можно как к элементу коллекции и, напрямую, по его уникальному имени.
Откройте редактор VBA и обратите внимание на вашу книгу в проводнике, где уникальные имена листов указаны без скобок, а в скобках – имена листов, отображаемые на ярлычках в открытой книге Excel. Уникальные имена листов отсортированы по алфавиту и их расположение по порядку не будет соответствовать их индексам (номерам), если листы перемещались по отношению друг к другу. Индексы листов смотрите по порядку расположения ярлычков в открытой книге. Переместили листы – изменились их индексы.
Обращение к рабочему листу в коде VBA Excel:
‘По уникальному имени УникИмяЛиста ‘По индексу Worksheets(N) ‘По имени листа на ярлычке Worksheets(“Имя листа”) |
- УникИмяЛиста – уникальное имя листа, отображаемое в проводнике редактора VBA без скобок, с помощью кода VBA изменить его невозможно.
- N – индекс листа от 1 до количества всех листов в книге, соответствует порядковому номеру ярлычка этого листа в открытой книге Excel.
- Имя листа – имя листа, отображаемое в проводнике редактора VBA в скобках, с помощью кода VBA изменить его можно.
Количество листов в рабочей книге Excel определяется так:
‘В активной книге Worksheets.Count ‘В любой открытой книге, ‘например, в «Книга1.xlsm» Workbooks(“Книга1.xlsm”).Worksheets.Count |
Скрытие и отображение листов
Для скрытия и отображения рабочих листов в VBA Excel используется свойство Worksheet.Visible со следующим синтаксисом:
expression.Visible
где expression – переменная, представляющая собой объект Worksheet. Свойству Worksheet.Visible могут присваиваться следующие значения:
- False – лист становится невидимым, но он будет присутствовать в списке скрытых листов, и пользователь сможет его отобразить с помощью инструментов рабочей книги Excel.
- xlVeryHidden – лист становится супер невидимым и его не будет в списке скрытых листов, пользователь не сможет его отобразить. Актуально для Excel 2003-2016.
- True – лист становится видимым.
Аналоги присваиваемых значений:
- False = xlHidden = xlSheetHidden = 1
- xlVeryHidden = xlSheetVeryHidden = 2
- True = xlSheetVisible = -1 (константа xlVisible вызывает ошибку)
Примеры:
Лист1.Visible = xlSheetHidden Лист2.Visible = –1 Worksheets(Worksheets.Count).Visible = xlVeryHidden Worksheets(“МойЛист”).Visible = True |
Как создать, скопировать, переместить или удалить рабочий лист с помощью кода VBA Excel, смотрите в этой статье.
Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.
Описание задачи
Как правило, когда мы долго работаем с большим количеством листов, возникает потребность в их переименовании. Переименовать листы поштучно достаточно просто дважды кликнув по вкладке и введя новое название. Однако, если листов десятки, то это утомительно и отнимает время. Гораздо удобнее использовать надстройку VBA-Excel.
C помощью нее переименовать все листы в книге можно следующим образом:
- Нужно подготовить два списка. Первый с перечнем наименований текущих листов. Второй – с новыми наименованиями листов. Проще всего сделать два столбца в первом старые наименования и рядом список, как нужно переименовать.
- Перейдите на вкладку VBA-Excel (она будет доступна после установки программы).
- В меню Диспетчеры найдите пункт Диспетчер листов.
- В диспетчере выберите команду Переименовать
- В диалоговом окне Переименовать листы из выделенного списка укажите диапазон со старыми наименованиями листов и аналогичный диапазон, содержащий новые названия, которые должны получиться в процессе переименования.
При необходимости можно заполнить диапазон текущими названиями листов нажав кнопку Заполнить. - Нажмите кнопку Переименовать.
Как копировать и переименовать лист Excel макросом
Представьте ситуацию: Вы готовите планы работ для сотрудников определенного отдела фирмы. Пример таблицы плана выглядит так:
Руководитель этого отдела пожелал, чтобы названия листов планов работ для каждого сотрудника содержали их имена и фамилии.
Многократное копирование листов шаблона для составления и заполнения планов работ сотрудников с переименованием, потребует много времени и сил если делать все это вручную. Поэтому напишем свой макрос, который упростит данную задачу.
Техническое Задание (ТЗ) для макроса заключается в следующем. После выделения ячеек, которые содержат названия для листов нужно скопировать лист с шаблоном для планов работ ровно столько сколько будет выделенных ячеек и ввести соответствующие названия в ярлычки.
Для этого сначала откройте редактор кода макроса: «РАЗРАБОТЧИК»-«Код»-«Visual Basic» (ALT+F11):
В редакторе создайте новый модуль выбрав инструмент «Insert»-«Module» и введите в него следующий код макроса:
SubPlanRabot()
DimdiapazAsRange
DimiAs Long
DimlistAsWorksheet
On Error Resume Next
Setdiapaz = Application.InputBox("Пожалуйста, выделите диапазон ячеек, который содержит названия для новых листов!", Type:=8)
On Error GoTo0
IfdiapazIs Nothing Then Exit Sub
Setlist = ActiveSheet
Fori = 1Todiapaz.Count
list.Copy after:=ActiveSheet
ActiveSheet.Name = Left(diapaz(i), 31)
Next
End Sub
Теперь если вы хотите скопировать лист шаблона для заполнения плана работ и создать копии плана для каждого сотрудника имена с фамилиями которых будут присвоены названиям листа, то перейдите на исходный лист с шаблоном плана работ и выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«PlanRabot»-«Выполнить». Сразу же после запуска макроса появиться диалоговое окно:
Теперь перейдите на лист «Имена и Фамилии» и выделите в нем диапазон ячеек, которые содержат имена и фамилии сотрудников. И нажмите на кнопку ОК.
В результате чего макрос сам автоматически скопирует планы работ для каждого сотрудника и присвоит новым листам соответственные имена и фамилии.
Перемещение/копирование листов в Excel
Перемещать листы в Excel с помощью мышки очень просто: возьмите ярлычок листа и, двигаясь по горизонтали, перетащите его на новое место.
Если во время этой операции вы нажмете и будете удерживать клавишу [Ctrl], то лист… правильно, скопируется! (Вспомните, как мы копировали файлы в WINDOWS ). То же самое можно делать с группой листов.
Эту же операцию можно выполнить в Excel с помощью команды контекстного меню листа Переместить/скопировать или команды Правка/Переместить/скопировать лист . Ими особенно удобно пользоваться, если вы хотите скопировать или переместить лист в другую книгу.
Перед копированием или перемещением листа в другую книгу необходимо открыть книгу-получатель. Кроме того, в случае копирования не забудьте установить флажок в поле Создать копию . В противном случае лист просто переместится в указанное вами место.
Задание для самостоятельной работы:
В книге Мои таблицы. xls переместите лист Население Земли в конец книги, верните его на прежнее место, сделайте копию листа в этой же книге, скопируйте его в новую книгу.
Создайте пустой файл Мои таблицы-копии.xls ( для этого новую рабочую книгу сохраните под этим названием в каталоге C:ST). Скопируйте в него лист Население Земли.
Как сменить название листа
При создании новой книги Excel рабочие листы по умолчанию носят имя Лист1, Лист2 и т.д.
Как правило, листы переименовывают в более подходящие имена, в зависимости от его содержания. Это может быть и «Отчет» и «График» и т.д. Чтобы переименовать название листа, дважды кликните на ярлыке данного листа.
Программа выделит этот ярлык и включит название в режим редактирования, так что вы сможете прописать любое название какое захотите.
НО!
1. Название листа может содержать максимум до 31 символа, причем пробелы допускаются.
2. В названии листа нельзя прописывать следующие символы:
* (звездочка).
: (двоеточие);
/ (косая черта);
[ ] (квадратные скобки);
“ (кавычка);
< > угловые скобки);
? (знак вопроса);
(обратная косая черта);
Учтите, что именно на ярлыке листа будет отображаться название, поэтому для длинного названия необходимо будет более длинный ярлык. Таким образом, если вы хотите использовать более длинные имена листов, то без прокручивания полосы вы сможете увидеть только несколько ярлыков.
Как изменить имя листа при помощи контекстного меню?
Чтобы переименовать лист при помощи контекстного меню, нужно:
1) в окне открытой книги один раз кликнуть правой кнопкой мыши на ярлыке нужного листа;
2) в контекстном меню выбрать пункт “Переименовать”;
3) набрать новое имя листа в соответствии с требованиями к именам листов;
4) нажать клавишу Enter на клавиатуре, чтобы закрепить новое имя.
Удаление листа в Excel
- Щелкните правой кнопкой мыши по ярлычку листа, который необходимо удалить, и из контекстного меню выберите пункт Удалить.
- Лист будет удален.
Удаление листа из рабочей книги нельзя отменить. Это одно из немногих необратимых действий в Excel. Хорошенько подумайте, прежде чем удалять их.
Если требуется ограничить изменения, которые разрешается вносить в текущий лист, Вы можете его защитить. Для этого щелкните правой кнопкой мыши по ярлычку листа и из контекстного меню выберите пункт Защитить лист.
Источники
- http://macros-vba.ru/nadstrojki/excel/246-kak-pereimenovat-list-v-rabochej-knige-excel-pereimenovanie-listov
- https://lumpics.ru/how-to-rename-worksheet-in-excel/
- https://office-guru.ru/excel/pereimenovanie-vstavka-i-udalenie-lista-v-excel-24.html
- https://vremya-ne-zhdet.ru/vba-excel/rabochiy-list-obrashcheniye-pereimenovaniye-skrytiye/
- https://micro-solution.ru/projects/addin_vba-excel/sheets-rename
- https://exceltable.com/vba-macros/makros-pereimenovat-listy
- https://best-exam.ru/pereimenovanie-listov-v-excel/
- https://zen.yandex.ru/media/topnews/urok-excel–32-kak-izmenit-nazvanie-i-cvet-iarlyka-rabochego-lista-5b2b7d5bcb0ffb00a9d43087
Home / VBA / How to RENAME a Sheet using VBA in Excel
When you add a new sheet in a workbook, you have the option to name it. But you can also rename it any time using the name property of the worksheet. In this tutorial, we will look at different ways to rename a sheet or multiple sheets using a VBA code.
Steps to Rename a Sheet using a VBA Code
- First, define the sheet that you want to rename using the worksheet object.
- After that, you need to use (.Name) to access the name property that you want to change.
- Next, type an equal sign to that to tell VBA the value you want to use to rename the sheet.
- In the end, type the name of the sheet that you want to use.
Helpful Links: Run a Macro – Macro Recorder – Visual Basic Editor – Personal Macro Workbook
Rename the Activesheet
If you want to rename the active sheet, in that case, you don’t need to define the sheet name, instead, you need to use the ActiveSheet object that tells VBA to refer to the sheet that is active right now. Here’s the code.
Activesheet.Name = "mySheet"
Note: To rename a sheet you don’t need to activate it.
As you know every sheet has a number based on its position in the workbook. Let’s say you want to rename the sheet that you have on the fifth number, the code would be.
Sheets(5).Name = "mySheet5"
When you run the above macro, it renames the sheet that is on the fifth number.
Check if Sheet Exists before Renaming
If you try to rename a worksheet that doesn’t exist, VBA will show you an error, just like below.
The solution to this problem is the following code that uses FOR EACH, which can loop through all the worksheets to find the sheet that you have defined and then rename that sheet.
Sub check_sheet_rename()
Dim ws As Worksheet
Dim mySheet As String
Dim SheetName As String
mySheet = InputBox("enter the name of the sheet that you want to rename.")
SheetName = InputBox("Enter new name for the sheet.")
For Each ws In ThisWorkbook.Worksheets
If mySheet = ws.Name Then
ws.Name = SheetName
End If
Next ws
End Sub
Rename a Sheet using Value from a Cell or a Range
You can also rename a sheet by taking value from a cell. Let’s say the value is in cell A1.
Sheets("Sheet1").name = Range("A1").Value
But let’s say you want to name multiple sheets based on the values in a range of cells. In that case, you need to have code like the following.
Sub vba_sheet_rename_multiple()
Dim wsCount As Long
Dim rCount As Long
Dim ws As Worksheet
Dim name As Range
Dim i As Long
wsCount = ThisWorkbook.Worksheets.Count
rCount = Range("A1:A10").Rows.Count
'Checks if the count of the names provided is less _
or more than the sheets in the workbook
If wsCount <> rCount Then
MsgBox "There's some problem with the names provided."
Exit Sub
Else
'Check if any of the cells in the name range is empty.
For Each name In Range("A1:A10")
If IsEmpty(name) = True Then
i = i + 1
End If
Next name
If i > 0 Then
MsgBox "There's is a blank cell in the names range."
Exit Sub
End If
End If
'rename each sheet using the value from the range cell by cell.
i = 1
For Each ws In ThisWorkbook.Worksheets
ws.name = Range("A1:A10").Cells(i, 1).Value
i = 1 + i
Next ws
End Sub
When you run this VBA code, first it will check if the cells in the range are equal to the number of sheets that you have in the workbook. After that, it will check if all the cells in the range that you have specified have values or not. And in the end, rename all the sheets using those names.
It will verify two conditions using IF THEN ELSE and then rename all the sheets.
More Tutorials on VBA Worksheets
- Back to VBA Worksheet / VBA Tutorial
I want to ask about rename the excel sheet, i want to rename the sheet with new name : older name + _v1.
So if my current sheet name is test, then I want the new name test_v1.
I only know the standard vba for rename excel sheet which is renaming excel sheet by the sheet content.
Sub Test()
Dim WS As Worksheet
For Each WS In Sheets
WS.Name = WS.Range("A5")
Next WS
End Sub
brettdj
54.6k16 gold badges113 silver badges176 bronze badges
asked Apr 1, 2016 at 2:07
2
The «no frills» options are as follows:
ActiveSheet.Name = "New Name"
and
Sheets("Sheet2").Name = "New Name"
You can also check out recording macros and seeing what code it gives you, it’s a great way to start learning some of the more vanilla functions.
answered Apr 1, 2016 at 3:54
This should do it:
WS.Name = WS.Name & "_v1"
answered Apr 1, 2016 at 2:58
Tim WilliamsTim Williams
150k8 gold badges96 silver badges124 bronze badges
0
Suggest you add handling to test if any of the sheets to be renamed already exist:
Sub Test()
Dim ws As Worksheet
Dim ws1 As Worksheet
Dim strErr As String
On Error Resume Next
For Each ws In ActiveWorkbook.Sheets
Set ws1 = Sheets(ws.Name & "_v1")
If ws1 Is Nothing Then
ws.Name = ws.Name & "_v1"
Else
strErr = strErr & ws.Name & "_v1" & vbNewLine
End If
Set ws1 = Nothing
Next
On Error GoTo 0
If Len(strErr) > 0 Then MsgBox strErr, vbOKOnly, "these sheets already existed"
End Sub
answered Apr 1, 2016 at 3:52
brettdjbrettdj
54.6k16 gold badges113 silver badges176 bronze badges
0
0 / 0 / 0 Регистрация: 14.05.2015 Сообщений: 6 |
|
1 |
|
Необходимо переименовать большое количество листов14.05.2015, 11:20. Показов 3047. Ответов 10
Всем привет. Проблема в следующем: есть большое кол-во листов в книге. И есть названия этих листов типа 01-05-15К или др. буква. Название берется из названия акта (можно присвоить из ячейки). Можете умные товарищи подсказать, какой макрос написать для автоматического переименования этих листов. И корректировке при добавлении новых. А то накосячила и придется 20 листов вручную переименовывать. Заранее спасибо.
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
14.05.2015, 11:20 |
Ответы с готовыми решениями:
Необходимо отобразить в Delphi большое количество объектов Необходимо заменить большое количество знаков в документе
10 |
3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,930 |
|
14.05.2015, 11:41 |
2 |
(можно присвоить из ячейки) из какой? ячейка на всех листах? одна и та же?
1 |
0 / 0 / 0 Регистрация: 14.05.2015 Сообщений: 6 |
|
14.05.2015, 12:51 [ТС] |
3 |
Да, на каждом листе ячейка одна и та же точнее их две. Они объединены. Ячейка С1
0 |
Vlad999 3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,930 |
||||
14.05.2015, 13:18 |
4 |
|||
Решениедля переименования листов книге.
Т.к. файла не видел то перед запуском макроса сохранитесь и если что не так после прохода макроса закрывайте без сохранения.
1 |
varenice 0 / 0 / 0 Регистрация: 14.05.2015 Сообщений: 6 |
||||
14.05.2015, 13:30 [ТС] |
5 |
|||
Выдает ошибку может мне приложить файл с который необходимо изменить? Или набросать быстренько пример?
0 |
5942 / 3154 / 698 Регистрация: 23.11.2010 Сообщений: 10,524 |
|
14.05.2015, 13:33 |
6 |
Или набросать быстренько пример? может это стоит Вам сделать
1 |
3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,930 |
|
14.05.2015, 13:36 |
7 |
Решение
может мне приложить файл который необходимо изменить если там ни чего конфиденциального то приложите.
1 |
0 / 0 / 0 Регистрация: 14.05.2015 Сообщений: 6 |
|
14.05.2015, 13:37 [ТС] |
8 |
И заодно, может подскажете как автоматически переименовывать ячейку С1 при добавлении или удалении листа чтобы данные не сбивались премного благодарна. В примере несколько листов по факту их 90.
0 |
3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,930 |
|
14.05.2015, 13:56 |
9 |
Решение
переименовывать ячейку С1 при добавлении или удалении листа чтобы данные не сбивались здесь моих знания маловато.
1 |
0 / 0 / 0 Регистрация: 14.05.2015 Сообщений: 6 |
|
14.05.2015, 16:45 [ТС] |
10 |
Нумерация по очереди и три типа работ. 01-05-15К (01 номер; 05 месяц; 15 год; далее буква обозначение работы букв 3 К-кровельные работы; р-комплексный ремонт; м-малярные работы. Акты могут изменятся могут добавляться и удаляться. И их может быть куча. Вот в данный момент из-за одного моего просчета необходимо вручную переименовать 20 актов и присвоить им вручную другие номера….. Добавлено через 1 час 16 минут
может это стоит Вам сделать Может быть вы сможете помочь?
0 |
0 / 0 / 0 Регистрация: 14.05.2015 Сообщений: 6 |
|
22.05.2015, 11:23 [ТС] |
11 |
Vlad999, Товарищ, ничего не придумалось?=)))
0 |