Автоматическое создание нового листа в excel

 

Константин

Пользователь

Сообщений: 61
Регистрация: 26.04.2014

Уважаемые специалисты!
Помогите, пожалуйста, с решением такой задачи.

В файле 2 листа:
— список клиентов;
— шаблон отчета.

Как только пользователь добавляет в список еще одного клиента — автоматически создается новый лист:
— Название клиента в списке клиентов становится ссылкой на соответствующий созданный лист.
— создаваемый лист = скопированный шаблон отчета.
— название создаваемого листа = название клиента.
— в создаваемый лист вставляются данные из списка клиентов.

Подскажите, как такое сделать?

Пример во вложении.

 

Sanja

Пользователь

Сообщений: 14838
Регистрация: 10.01.2013

Я бы сделал

ТАК

. Зачем хранить одинаковые бланки, когда их можно формировать динамически  

Изменено: Sanja20.06.2015 20:28:39

Согласие есть продукт при полном непротивлении сторон.

 

CAHO

Пользователь

Сообщений: 2183
Регистрация: 25.02.2013

#3

20.06.2015 20:22:11

Тут я так понимаю всё равно надо создавать какую-то кнопочку для создания листа. Ибо если делать на добавление клиента, то это привязывается к режиму редактирования ячеек. А если человек допустит ошибку в клиенте и начнёт исправлять букву, лист опять создастся, уже с новым клиентом, хотя он тот же. И многие другие проблемки. Поэтому тут не просто создание листа и клиента, тут должен быть какой-то другой фактор влияющий на создание листа.
Думаю, что понятно объяснил суть проблемы.
Если просто сделать копию листа шаблона макросом, то можно так

Код
   Sheets("Шаблон отчета").Copy Before:=Sheets(1)
   Sheets(1).Name = "Клиент"

Изменено: CAHO20.06.2015 20:29:37

Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.

 

Константин

Пользователь

Сообщений: 61
Регистрация: 26.04.2014

#4

20.06.2015 20:30:56

Цитата
Sanja написал: Я бы сделал ТАК. Зачем хранить одинаковые бланки, когда их можно формировать динамически

Мне немного не подходит. Мне именно нужно создание листа при каждом добавлении в список клиентов.

Цитата
CAHO написал: Тут я так понимаю всё равно надо создавать какую-то кнопочку для создания листа.

Наверное, Вы правы. тогда добавляется еще одна задача:
В список клиента внес — и автоматически в строке созданного клиента должна появиться кнопочка «Сформировать отчет»

 

Юрий М

Модератор

Сообщений: 60577
Регистрация: 14.09.2012

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

#5

20.06.2015 20:34:22

Цитата
Константин написал: Как только пользователь добавляет в список еще одного клиента — автоматически создается новый лист:

Именно автоматически? Какой момент принять за создание новой записи — заполнены оба столбца? А если, как заметил САНО, при вводе данных произогшла ошибка и нужно подкорректировать запись немного — что тогда?

 

Sanja

Пользователь

Сообщений: 14838
Регистрация: 10.01.2013

#6

20.06.2015 20:37:55

Цитата
Константин написал: создание листа при каждом добавлении

тогда неизбежны

Цитата
CAHO написал: И многие другие проблемки

нужно продумать тщательнее.
ИМХО. Все равно не пойму зачем хранить в книге заполненные КАРТОЧКИ, храните все что относится к клиенту в общей базе и при необходимости формируйте карточки. ИМХО

Изменено: Sanja20.06.2015 21:04:57

Согласие есть продукт при полном непротивлении сторон.

 

Константин

Пользователь

Сообщений: 61
Регистрация: 26.04.2014

Ок, понял. Спасибо за советы. Действительно, решил пересмотреть подход к формированию карточек.

 

Юрий М

Модератор

Сообщений: 60577
Регистрация: 14.09.2012

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

Предлагаю по нажатию кнопки формировать карточку.

 

Юрий М

Модератор

Сообщений: 60577
Регистрация: 14.09.2012

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

Если всё же решите заводить каждому клиенту свой лист, то см. файл. Но возможны ошибки из-за имён листов…

 

Константин

Пользователь

Сообщений: 61
Регистрация: 26.04.2014

Юрий!
как всегда Вам огромное спасибо!!!

Я так и хочу решить!
Есть один момент. Создали «Петров», далее «Бымц!», лист Петров готов.
Проходит время, создаются «Сидоров» и «Фролов», но «Бымц!» протестует, говорит, что лист с таким именем уже существует (имеет ввиду Петрова). И есссно, листы Сидоров и Фролов не создаются.

Как лучше:
— отдельный «Бымц!» на каждую строку (но тогда она должна появляться напротив строки, где появился хот один символ в колонках B и С)
— один общий «Бымц!» на всю таблицу, но идет проверка на дублирование имен_клиентов/листов
?

 

Юрий М

Модератор

Сообщений: 60577
Регистрация: 14.09.2012

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

Не смог воспроизвести у себя подобную ошибку, когда создаётся лист с НОВОЙ фамилией. Уточните проблему.
P.S. Но сам подход не очень хороший: при большой клиентской базе будет куча листов…

 

Константин

Пользователь

Сообщений: 61
Регистрация: 26.04.2014

Юрий, пардон, действительно я ошибся.
Сначала поигрался, потом код посмотрел.
все ок, спасибо.

Но в целом я с Вами согласен, много листов выходит. Надо менять подход.

 

Юрий М

Модератор

Сообщений: 60577
Регистрация: 14.09.2012

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

#13

21.06.2015 00:08:22

Вариант: добавлять записи в базу, а если нужна карточка — выводить по запросу (поиску) данные в лист «Шаблон».

Коллеги.
1. Прошу подсказать существует ли у Экселя возможности создавать автоматически листы в книге?
Например,  в ячейках A1-A5 первого листа записаны 5 значений
«имя первого листа»……. «имя пятого листа»
и есть 5 листов с такими названиями листов
если добавляем в ячеку A6 значение «имя шестого листа», то автоматически создаётся ещё один лист с указанным названием.

2. Обратная задача.
В ячейках стоит формула, которая определяет имена листов и подставляет в соответствующую ячейку определённое имя.

Заранее благодарен.


Так?
В из_ячеек_в_листы.xls в Лист1 столбец А нужно ввести корректный для имени листа текст
В из_листов_в_ячейки.xls нужно вставить новый лист или изменить название старого и посмотреть на Лист1

Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995


Цитата: _Boroda_ от 17.02.2010, 01:53
Так?
В из_ячеек_в_листы.xls в Лист1 столбец А нужно ввести корректный для имени листа текст
В из_листов_в_ячейки.xls нужно вставить новый лист или изменить название старого и посмотреть на Лист1

А мне понравилось. Подскажет ли уважаемый _Boroda_  как генерировать новые листы с уже готовым форматированием.
Т.е. я создал некий бланк, и при вводе значений на листе файла «из_ячеек_в_листы.xls» создаётся новый лист (это _Boroda_ уже осуществил)
с уже готовым бланком


_Boroda_, Огромное спасибо.
Собственно говоря кzld озвучил мой основной вопрос.

Задача стоит такая:
При наступлении события
происходит добавление нового знчения в файл с первичной информацией,
и по формуле ссылающейся на ячейки с данной информацией и растянутой по первому столбцу
создаётся новый лист с преднастроенным шаблоном.

Событие может быть — новый месяц, новый сотрудник, новая роль, новые материалы к изучению …

Задача на самом деле чуть больше. В прилагаемом файле краткое описание. Также часть задачи (по нахождению максимума) размещаю дополнительно в отдельной теме чтобы проще было искать.


Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995


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

;D

Спасибо огромное. Будем развивать.


Доброго времени суток уважаемый _Boroda_
Столкнулся с такой же проблемой но не смог разобраться как решить мою задачю
Задача поставлена таким образом:
Нужно чтоб при добавлении текста в ячейку В КОНЕЦ КНИГИ был скопирован последний лист этой книги с названием указанным в ячейке
PS: я так понимаю открыв редактор VB я увижу ваш скрипт и смогу внедрить его в свой документ
Заранее Спасибо

Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.


выложил пример в нем попробовал подробней описать поставленную задачу

Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.


Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995


Огромное спасибо  :D это именно то что я хотел
+1

Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.


Dobryi den’, uvajaemyi _Boroda_

Vo pervyh,  izvinite za transliteratsiyu…. u menya klava ne russkaya, a v slepuyu ya pechatat’ ne umeyu.

vo vtoryh, hotelos’ by obratit’sya k vam za pomosch’yu… Vy horosho osvetili temu avtomaticheskogo sozdaniya listov v Excele iz dannyh v tablitse… Ya popytalsya ispol’zovat’ fail s gotovym makrosom, no eto kak stavit’ podvesku ot Jiguley na BMW, a samomu mne, kak cheloveku dalekomu ot VBA otredaktirovat’ kod -delo nemuslennoe.

Vy ne mogli by vstavit’ makros v predlojennyi fail, kotoryi budet sozdavat’ listy v kontse kniki s imenem po znacheniyu yacheiki pervogo stolbtsa stranitsy «Main» s formatom i shapkoi tablitsy, no ne dannymi v tablise  iz imeyuchegosya uje lista?

izvinite za naglost’ i bespokoistvo, pojaluysta.

Artem


Вопрос: а если таблица должна быть определенного размера и я скопировала формулу на остальные ячейки, и естественно, у меня отображается в ячейках «#ССЫЛКА!». можно ли каким-то образом сделать так, что бы в ячейках отображалось или значение или ничего?!
Заранее спасибо!


Можно.
условным форматированием
формулой если(еошибка(…);»»;…)
другой формулой
макросом

Но совсем что-то не понятно, а какое отношение это все имеет к теме «Автоматическое создание листов книги»?

Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995


ну как бэ, вроде как, работаю с фалом из этой темы :)) ну хорошо, как перенести в новую тему? :)))
условным форматированием пробовала — ничего не получилось. не пойму как выставить условие о не верной ссылке.


получилось через формулу!!! Вы гений! :)


условное_форматирование
выделяем диапазон, УФ, формула =ЕОШИБКА(B2), формат — белый текст
формула БЕЗ ЗНАКОВ $

Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995


А теперь вопрос по теме: как сделать так, что бы при добавлении нового месяца, не только с вновь созданного листа можно было вернуться на главную страницу, но и в столбце «А», нажав на нужный мне месяц, я попадала на соответствующий лист? Т.е. при автоматическом создании нового листа в столбце «А» при нажатии на месяц переходит на соответствующий лист сразу, без дополнительных ручных манипуляций и создания гиперссылок. Просто это сильно облегчит работу, если в книге более 20-70 листов!


Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995


:D именно!!! то, что надо! выручили блондинку!  ::)


Товарищи, а как в макросе прописать, что каждый последующий лист будет копироваться не из предыдущего, как сейчас прописано, а из листа под названием «Шаблон». это реально?

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo A
r_ = Range(«a» & Cells.Rows.Count).End(xlUp).Row
If Target.Row = r_ And Range(«a» & r_) <> «» Then
    n_ = Format(Range(«a» & r_), «MMMM YYYY»)
    s_ = ThisWorkbook.Sheets.Count
    Sheets(s_).Copy After:=Sheets(s_)
    Sheets(s_ + 1).Name = n_
End If
Exit Sub
A: MsgBox «Ïðîâåðü, íåò ëè ëèñòà ñ òàêèì èìåíåì.»
End Sub


вместо
Sheets(s_).Copy After:=Sheets(s_)
нужно
Sheets(«Шаблон»).Copy After:=Sheets(s_)

Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995


Замечательные примеры. Коллеги а подскажите пожалуйста по этой же теме, как можно реализовать следующее:

1. На листе «Список» при написании в ячейке А2 «Фамилия Имя» (например — Иванов Иван) создается новый лист на базе имеющегос «Шаблона» с именем, но с именем Иванов И, т.е. Фамилия и первая буква имени, а если уже такое сочетание имеется, то Фамилия и первые две буквы имени (например — Иванов Иг)

2. Сама ячейка А2 где «Фамилия Имя» должна стать гиперссылкой на созданный лист.

3. А в созданом листе Иванов И в ячейке А1  прописывается его «Фамилия Имя» (Иванов Иван).

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

Заранее ОГРОМНЕЙШЕЕ все спасибо.


Коллеги, очень нужна ваша помощь…


я только, что попробовала ввести Иванов Иван Иванович и с таким же именем у меня создался лист.


Действительно имя листа соответствует  введеному  в ячейке имени… а возможно так так указано выше…


Сегодня я покажу, как заполнить однотипные листы, по шаблону Excel на основе списка.

Переименуем в книге первый лист, это у нас будет список, допустим сотрудников.

лист со списком сотрудников

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

лист с шаблоном таблицы

Вот такая будет табличка, потом покажу вам одну формулу в ячейке, как имя листа поместить в ячейку.

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

Сохраним наш документ как книга Excel с поддержкой макросов с расширением так xlsm, на ленте должен находиться в последнем пункте — пункт Разработчик, если его нет, то в файл, параметры нужно будет в настройках ленты добавить этот пункт, отметьте его галочкой.

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

таблица с кнопкой

Перейдём на вкладке Разработчик в Visual Basic либо нажмем Alt+F11, для того чтобы открылся редактор макросов.

Нажмем в меню insertmodule, напишем модуль Sub ListTempl(), объявим переменную tmpName.

редактор VBA с кодом

Получим данные нашего списка из листа список в переменную tmpName, объявив диапазон А1:А3. Но если нужно будет больше, то будем менять это значение. Пока в примере оставим так.

Напишем цикл for от 1 до 3, по сколько мы знаем конечное количество записей нашего списка и теперь сделаем копию листа шаблон, создадим новый лист копии листа с шаблоном, шаблон и присвоим имя каждому листу, значение то которое у нас находится в списке. Закончим цикл next i.

Теперь нажмем правой кнопкой на кнопке, назначить макрос, выберем макрос ListTempl, OK, сохранить.

Нажмем на кнопку, сформировались три листа с название по списку сотрудников, которые были в списке. И можно будет заполнять или печатать.

Sub ListTempl()
Dim tmpName
tmpName = Sheets("Шаблон").Range("a1:a3")

For i = 1 To 3
Sheets("Шаблон").Copy Before:=Sheets(i)
Sheets(i).Name = tmpName(i, 1)
Next i

End Sub

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

заполненные таблицы по шаблону

Если нажать на кнопку повторно, то Excel выдаст ошибку, что подобные листы уже используется, надо учитывать этот момент, просто удалите дубли, в этом примере я не буду делать повторную проверку или добавление каких-то случайных значений к имени листов.

Давайте добавим теперь в шапку шаблона формулу, которая будет в ячейку присваивать имя листа, сейчас формула находится на листе с названием шаблон.

Эта формула позволяет получить из значение листа имя листа в ячейку, происходит разбор пути файла до листа.

=ПРОПНАЧ(ПСТР(ЯЧЕЙКА("имяфайла";A1);ПОИСК("]";ЯЧЕЙКА("имяфайла";A1))+1;99))

Давайте допишет для примера как это бывает в таблицах, «Список для », а далее будет фамилия поставляться из названия листа.

Нажмем на кнопку, и как видите, сформировались все листы, и в каждом листе, в этой ячейки у нас будет находиться имя сотрудника.

заполненные листы по шаблону

Ну либо того, что у вас будет находилась в списке, при условии, что эти значения уникальны.

Если же всё-таки вам нужно будет сделать два листа для одной уникальной записи, тут могу предложить следующее.

Изменим в коде диапазон на А4, так как у нас ещё один пункт добавился и в цикле исправим на четыре.

Sub ListTempl()
Dim tmpName
tmpName = Sheets("Шаблон").Range("a1:a4")

For i = 1 To 4
Sheets("Шаблон").Copy Before:=Sheets(i)
Sheets(i).Name = tmpName(i, 1)
Next i

End Sub

Удалим всё снова и нажмем на кнопку. Опять ошибка, как вариант предлагаю добавить пробел в конце названия дублируемого пункта списка.

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

листы с не уникальными записями

Смотрите видео: Листы в Excel из списка по шаблону

Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!

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

Создавайте новые листы для каждой строки с кодом VBA
Создавайте новые листы для каждой строки с помощью утилиты «Разделить данные». Kutools for Excel


Создавайте новые листы для каждой строки с кодом VBA

С помощью следующих кодов вы можете создать новый лист на основе значений столбца или просто создать новые листы для каждой строки в Excel.

1. Нажмите другой + F11 клавиши одновременно, чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули. А затем вставьте следующий код в Модули окно.

Код VBA: создать новый лист для каждой строки на основе столбца

Sub parse_data()
'Update by Extendoffice 2018/3/2
    Dim xRCount As Long
    Dim xSht As Worksheet
    Dim xNSht As Worksheet
    Dim I As Long
    Dim xTRrow As Integer
    Dim xCol As New Collection
    Dim xTitle As String
    Dim xSUpdate As Boolean
    Set xSht = ActiveSheet
    On Error Resume Next
    xRCount = xSht.Cells(xSht.Rows.Count, 1).End(xlUp).Row
    xTitle = "A1:C1"
    xTRrow = xSht.Range(xTitle).Cells(1).Row
    For I = 2 To xRCount
        Call xCol.Add(xSht.Cells(I, 1).Text, xSht.Cells(I, 1).Text)
    Next
    xSUpdate = Application.ScreenUpdating
    Application.ScreenUpdating = False
    For I = 1 To xCol.Count
        Call xSht.Range(xTitle).AutoFilter(1, CStr(xCol.Item(I)))
        Set xNSht = Nothing
        Set xNSht = Worksheets(CStr(xCol.Item(I)))
        If xNSht Is Nothing Then
            Set xNSht = Worksheets.Add(, Sheets(Sheets.Count))
            xNSht.Name = CStr(xCol.Item(I))
        Else
            xNSht.Move , Sheets(Sheets.Count)
        End If
        xSht.Range("A" & xTRrow & ":A" & xRCount).EntireRow.Copy xNSht.Range("A1")
        xNSht.Columns.AutoFit
    Next
    xSht.AutoFilterMode = False
    xSht.Activate
    Application.ScreenUpdating = xSUpdate
End Sub

Внимание: A1: C1 — диапазон заголовков вашей таблицы. Вы можете изменить его по своему усмотрению.

3. Нажмите F5 ключ для запуска кода, то новые рабочие листы будут созданы после всех рабочих листов текущей книги, как показано на скриншоте ниже:

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

Код VBA: напрямую создавать новый лист для каждой строки

Sub RowToSheet()
	Dim xRow As Long
	Dim I As Long
	With ActiveSheet
		xRow = .Range("A" & Rows.Count).End(xlUp).Row
		For I = 1 To xRow
			Worksheets.Add(, Sheets(Sheets.Count)).Name = "Row " & I
			.Rows(I).Copy Sheets("Row " & I).Range("A1")
		Next I
	End With
End Sub

После запуска кода каждая строка активного рабочего листа будет помещена на новый рабочий лист.

Внимание: Строка заголовка также будет помещена на новый лист с этим кодом VBA.


Создавайте новые листы для каждой строки с помощью утилиты «Разделить данные». Kutools for Excel

На самом деле, описанный выше метод сложен и труден для понимания. В этом разделе мы познакомим вас с Разделить данные полезности Kutools for Excel.

1. Выберите таблицу, которую нужно использовать для создания новых листов, и нажмите Кутулс Плюс> Плевать данные. Смотрите скриншот:

2. в Разделить данные на несколько листов диалоговое окно, сделайте следующее.

A. Для создания новых листов на основе значения столбца:

1). Пожалуйста, выберите Конкретный столбец вариант и укажите столбец, по которому вы хотите разделить данные, в раскрывающемся списке;

2). Если вы хотите назвать листы значениями столбцов, выберите Значения столбца в Правила раскрывающийся список;

3). Щелкните значок OK кнопка. Смотрите скриншот:

Б. Для непосредственного создания новых листов для каждой строки:

1). Выбрать Фиксированные строки вариант, введите номер 1 в коробку;

2). Выбрать Номера строк из Правила раскрывающийся список;

3). Щелкните значок OK кнопка. Смотрите скриншот:

создается новая книга со всеми новыми листами внутри. Смотрите скриншоты ниже.

Создание новых листов для каждой строки на основе значения столбца:

Создание нового листа для каждой строки без учета значения столбца:

  Если вы хотите получить бесплатную пробную версию (30-день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.

Создавайте новые листы для каждой строки с помощью утилиты «Разделить данные». Kutools for Excel


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Skip to content

Как добавить новый лист и присвоить имя

На чтение 2 мин. Просмотров 6.9k.

Что делает макрос: Самый простой вариант автоматизации — добавить новый лист с присвоением ему конкретного имени.

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как работает макрос
  4. Как использовать

Как макрос работает

Если вы владеете минимальными знаниями английского, то поймете, как работает этот макрос без подсказок.

Код макроса

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. Вы знаете, что если присвоить новому листу имя, которое уже есть, то возникнет ошибка. Таким образом, на шаге 1, макрос говорит Excel немедленно перейти к строке, которая говорит MyError (на шаге 3), если есть ошибка.
  2. Для создания листа используем метод Add. По умолчанию, лист называется SheetХХ, где хх представляет число листа. Мы даем листу новое имя путем изменения свойства объекта ActiveSheet.Name в этом случае мы именуем рабочий лист «Отчёт и текущий год».
  3. Как и в рабочих книгах, каждый раз, когда вы добавляете новый лист с помощью VBA, он автоматически становится активным. Именно поэтому мы пишем ActiveSheet.Name.
  4. Обратите внимание, что на шаге 4 мы выходим из процедуры. Делаем так, чтобы он случайно не показал сообщение об ошибке.
  5. Данный шаг запускается, если имя нового листа совпадает с уже существующим в книге. С помощью сообщения уведомляем пользователя об этом. Опять же, этот шаг должен быть выполнен только в случае возникновения ошибки.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код во вновь созданном модуле.

Понравилась статья? Поделить с друзьями:
  • Автоматическое создание книги excel
  • Автоматическое создание имен excel
  • Автоматическое создание записи в excel
  • Автоматическое создание заголовков в word
  • Автоматическое создание документов в excel