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

Открытие книги Excel из кода VBA. Проверка существования книги. Создание новой книги, обращение к открытой книге и ее закрытие. Методы Open, Add и Close.

Открытие существующей книги

Существующая книга открывается из кода VBA Excel с помощью метода Open:

Workbooks.Open Filename:=«D:test1.xls»

или

Workbooks.Open («D:test1.xls»)

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

Проверка существования файла

Проверить существование файла можно с помощью функции Dir. Проверка существования книги Excel:

If Dir(«D:test1.xls») = «» Then

    MsgBox «Файл не существует»

Else

    MsgBox «Файл существует»

End If

Или, если файл (книга Excel) существует, можно сразу его открыть:

If Dir(«D:test1.xls») = «» Then

    MsgBox «Файл не существует»

Else

    Workbooks.Open Filename:=«D:test1.xls»

End If

Создание новой книги

Новая рабочая книга Excel создается в VBA с помощью метода Add:

Созданную книгу, если она не будет использоваться как временная, лучше сразу сохранить:

Workbooks.Add

ActiveWorkbook.SaveAs Filename:=«D:test2.xls»

В кавычках указывается полный путь сохраняемого файла Excel, включая присваиваемое имя, в примере — это «test2.xls».

Обращение к открытой книге

Обращение к активной книге:

Обращение к книге с выполняемым кодом:

Обращение к книге по имени:

Workbooks(«test1.xls»)

Workbooks(«test2.xls»)

Обратиться по имени можно только к уже открытой книге, а чтобы из кода VBA Excel книгу открыть, необходимо указать полный путь к файлу.

Открытая рабочая книга закрывается из кода VBA Excel с помощью метода Close:

Workbooks(«test1.xlsx»).Close

Если закрываемая книга редактировалась, а внесенные изменения не были сохранены, тогда при ее закрытии Excel отобразит диалоговое окно с вопросом: Вы хотите сохранить изменения в файле test1.xlsx? Чтобы файл был закрыт без сохранения изменений и вывода диалогового окна, можно воспользоваться параметром метода Close — SaveChanges:

Workbooks(«test1.xlsx»).Close  SaveChanges:=False

или

Workbooks(«test1.xlsx»).Close  (False)

Закрыть книгу Excel из кода VBA с сохранением внесенных изменений можно также с помощью параметра SaveChanges:

Workbooks(«test1.xlsx»).Close  SaveChanges:=True

или

Workbooks(«test1.xlsx»).Close (True)


Фразы для контекстного поиска: открыть книгу, открытие книги, создать книгу, создание книги, закрыть книгу, закрытие книги, открыть файл Excel, открытие файла Excel, существование книги, обратиться к открытой книге.


 

evgeniy_m

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

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

#1

06.09.2014 23:19:21

Доброе время суток. Есть книга, в ячейке А1 значение.

Код
Sub New2()     
Dim New_Wb As Workbook     
Set New_Wb = Workbooks.Add     
New_Wb.Activate     
New_Wb.SaveAs ("D:test" & "1" & ".xls")     
New_Wb.Close 
End Sub

Запускаю макрос, создается новая книга сохраняется по пути D:test, присваивается имя 1.xls и закрывается.

Проблема в следующем, как переписать макрос, чтобы новая книга сохранялась с названием как в ячейке А1 книги, с которой запускается макрос?
Заранее спасибо!

 

Alexander88

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

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

#2

06.09.2014 23:32:21

Попробуйте заменить пятую строку на:

Код
New_Wb.SaveAs ("D:test" & Cells(1, 1) & ".xls")

Изменено: Alexander8806.09.2014 23:32:32

 

Юрий М

Модератор

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

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

#3

06.09.2014 23:35:54

Код
Sub New2()
    Dim New_Wb As Workbook
    Set New_Wb = Workbooks.Add
    New_Wb.Activate
    New_Wb.SaveAs ("D:test" & ThisWorkbook.Sheets("Лист1").Range("A1") & ".xls")
    New_Wb.Close
End Sub

 
 

evgeniy_m

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

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

#4

06.09.2014 23:38:01

Цитата
Alexander88 пишет: заменить пятую строку на:

ошибку дает (

 

Юрий М

Модератор

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

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

#5

06.09.2014 23:39:26

Цитата
evgeniy_m пишет: ошибку дает

Это не информация — всегда следует указывать — КАКУЮ ошибку получаете.

 

И пример Юрия с указанием откуда берется ячейка не работает?

 

evgeniy_m

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

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

макрос не компилируеться..

 

Юрий М

Модератор

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

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

 

The_Prist

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

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

Профессиональная разработка приложений для MS Office

evgeniy_m, Лист1 в книге с макросом присутствует? Что означает «макрос не компилируется»?

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

evgeniy_m

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

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

#10

06.09.2014 23:55:12

Цитата
Юрий М пишет: Мой вариант проверяли?

супер! Огромное спасибо !

ПОмогите еще с одним моментом, книгу создал, обозвал её как Вы помогли, теперь беда… Хочу с книги откуда запускал макрос скопировать лист (plan) в эту новую книгу с созданым листом «plan_191».

Код
Dim sShName As String, sAddress As String, vData
    Dim objThisBook As Object
    Set objThisBook = GetObject.ActiveWorkbook
    sAddress = "A1:AA6000"
    vData = objCloseBook.Sheets("plan").Range(sAddress).Value
    objThisBook.Close False
    Sheets("plan_191").Range("A1").Resize(UBound(vData, 1), UBound(vData, 2)).Value = vData 

но на строке  Set objThisBook = GetObject.ActiveWorkbook дает ошибку…. как мне указать, что нужно копировать лист из книги откуда запускался макрос….?

 

Johny

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

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

#11

07.09.2014 00:01:23

Цитата
evgeniy_m пишет:
Хочу с книги откуда запускал макрос скопировать лист (plan) в эту новую книгу с созданым листом «plan_191».

Ничего не понятно (а в приложенном макросе вообще какая-то, извините, ерунда). :)

There is no knowledge that is not power

 

Юрий М

Модератор

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

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

#12

07.09.2014 00:04:40

Код
Sub New2()
    Dim New_Wb As Workbook
    Set New_Wb = Workbooks.Add
    ThisWorkbook.Sheets("plan").Copy
    New_Wb.Sheets.Add After:=New_Wb.Sheets(Sheets.Count)
    New_Wb.SaveAs ("D:test" & ThisWorkbook.Sheets("Лист1").Range("A1") & ".xls")
    New_Wb.Close
End Sub

 
 

Hugo

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

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

#13

07.09.2014 00:05:00

скопировать лист (plan) в эту новую книгу —

Код
sheets("plan").copy
 

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

 

evgeniy_m

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

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

Суть такая, открываю книгу, запускаю макрос, создается новая книга и лист в ней. Теперь из 1-й книги нужно скопировать лист в новую книгу.
Помогите пожалуйста  :)

 

Юрий М

Модератор

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

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

Согласен с Johny: ерунда получается — сначала имя листа «plan», затем «plan_191″…

 

Юрий М

Модератор

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

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

evgeniy_m, у Дмитрия (The_Prist) очень хороший текст в подписи — прочитайте))

 

Может проще создать копию книги, а потом удалить листы кроме нужного?

 

Hugo

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

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

Кстати хороший вариант сделать копию файла, его открыть, поудалять лишнее. Так и строки не пострадают, и связи…

 

evgeniy_m

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

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

#19

07.09.2014 00:12:45

Код
Dim sShName As String, sAddress As String, vData
    Dim objThisBook As Object
    Set objThisBook = GetObject("d:test.xls")
    sAddress = "A1:AA6000"
    vData = objThisBook.Sheets("abs_plan").Range(sAddress).Value
    Sheets("abs_plan_191").Range("A1").Resize(UBound(vData, 1), UBound(vData, 2)).Value = vData
 

Вот написал, все отлично работает, но копирует без сохранения параметров ячеек…

 

Johny

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

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

#20

07.09.2014 00:14:18

Так?

Код
Sub F()

    Dim wkbNew As Workbook
    Sheets("plan").Copy
    Set wkbNew = ActiveWorkbook
    wkbNew.Sheets(1).Name = "plan_191"
    wkbNew.SaveAs "D:test" & ThisWorkbook.Sheets("Лист1").Range("A1") & ".xls"
    
End Sub

There is no knowledge that is not power

 

Юрий М

Модератор

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

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

evgeniy_m, Вы читаете, что Вам пишут?

 

evgeniy_m

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

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

 

Honey

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

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

#23

30.05.2017 13:54:20

Всем привет!

Надеюсь мой вопрос здесь уместен. Я под основу взяла код, предлагаемый здесь. Но его чуток видоизменила. И теперь у меня проблема-выдает ошибку на строку

Код
New_Wb.SaveAs

А сам код вот

Код
Dim New_Wb As Workbook
    Set New_Wb = Workbooks.Add
    New_Wb.Activate
    New_Wb.SaveAs (Range("O6") & "" & Range("Книга") & ".xlsm")

либо

Код
Dim New_Wb As Workbook
    Set New_Wb = Workbooks.Add
    New_Wb.Activate
    New_Wb.SaveAs ("M:ProductionМастера2017Нормализация" & Range("имя_папки").Value & "" & Range("Книга") & ".xlsm")

Спасибо

Изменено: Honey30.05.2017 13:57:38

 

Honey

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

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

Люди добрые!

Помогите с проблемой выше, пожалуйста… Интернет обыскала ничего не получается(((
Вся надежда на Вас :(

 

The_Prist

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

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

Профессиональная разработка приложений для MS Office

#25

21.06.2017 08:46:59

Цитата
Honey написал:
выдает ошибку

что за ошибка — нам угадать?
Да и скобки здесь лишние. В VBA методы без присвоения результата переменной указываются без скобок:

Код
New_Wb.SaveAs Range("O6") & "" & Range("Книга") & ".xlsm"

плюс очень желательно указывать формат файла явно:

Код
New_Wb.SaveAs Range("O6") & "" & Range("Книга") & ".xlsm", 52

52 — формат xslm.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Honey

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

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

The_Prist,  спасибо, что откликнулись!

Ошибка Runtime error 1004:: Method ‘Range’ of Global Failed

Изменено: Honey21.06.2017 08:56:57

 

The_Prist

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

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

Профессиональная разработка приложений для MS Office

А Вы вдумайтесь в ошибку. В Google-переводчик закиньте. Тогда видно будет, что у Вас проблема в том, что нет диапазона «Книга» или «Об» или другого, чего Вы пишите в Range.
Так же надо помнить, что указание Range явного указания для него листа и книги подразумевает обращение к АКТИВНОЙ книге. А Вы её только что создали. Следовательно там НЕТ ИМЕНОВАННЫХ ДИАПАЗОНОВ, да и вообще данных.
Советую очень внимательно изучить:

Как обратиться к диапазону из VBA

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Honey

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

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

Во вложении файл, в котором этот самый макрос (модуль)

Прикрепленные файлы

  • Расчет.xlsm (76.72 КБ)

Изменено: Honey21.06.2017 09:06:17

 

Honey

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

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

The_Prist,
Об этом я читала… Видимо, действительно, я чего-то не понимаю((( У меня есть такие диапазоны. И я ведь указываю на имена диапазонов не в ново-созданной книге. Или как мне конкретней указать, чтобы диапазон брался конкретно с первоначальной книги для именования…?

Спасибо за ссылочку))

Изменено: Honey21.06.2017 09:09:17

 

The_Prist

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

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

Профессиональная разработка приложений для MS Office

#30

21.06.2017 09:20:23

Цитата
Honey написал:
указываю на имена диапазонов не в ново-созданной книге

нет. Я же написал, что указание Range без явного указания листа и книги в Вашем случае указывает на активный лист. А т.к. Вы это делаете после создания новой книги — то активна именно она, а не что-то там где-то еще. Видимо, читали либо не все, либо не то, либо не так.

Код
New_Wb.SaveAs ThisWorksbook.Sheets("1 норм").Range("O6") & "" & ThisWorksbook.Sheets("1 норм").Range("Книга") & ".xlsm", 52

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

Коллеги.
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 с помощью макроса написанного на VBA Excel.

Немного поясню задачу, допустим, нам необходимо сформировать какие-то специфические документы по шаблону массово, т.е. в итоге их получится очень много, как я уже сказал выше, например, по каждому сотруднику. И это нужно сделать непосредственно в Excel, если было бы можно это сделать в Word, то мы бы это сделали через «Слияние», но нам нужно именно в Excel, поэтому для этой задачи мы будем писать макрос.

Мы с Вами уже выгружали данные по шаблону через клиент Access из базы MSSql 2008 в Word и Excel вот в этой статье —  Выгрузка данных из Access в шаблон Word и Excel. Но сейчас допустим, у нас данные располагаются в базе, в клиенте которой нельзя или слишком трудоемко реализовать такую задачу, поэтому мы просто выгрузим необходимые данные в Excel и на основе таких данных по шаблону сформируем наши документы.

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

Напомню, что на данном сайте тема VBA Excel уже затрагивалась, например, в материале – Запрет доступа к листу Excel с помощью пароля

И так приступим!

Реализовывать нашу задачу будем на примере «Электронной карточке сотрудника» (я это просто придумал:), хотя может такие и на самом деле есть), т.е. документ в котором хранится личные данные сотрудника вашего предприятия, в определенном виде, именно в Excel.

Примечание! Программировать будем в Excel 2010.

И для начала приведем исходные данные, т.е. сами данные и шаблон

Данные.

Скриншот 1

Лист, на котором расположены эти данные так и назовем «Данные»

Шаблон.

Скриншот 2

Лист, на котором расположен шаблон, тоже так и назовем «Шаблон»

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

Это делается очень просто, выделяете необходимую ячейку или диапазон, и жмете правой кнопкой мыши и выбираете «Присвоить имя», пишите имя ячейки и жмете «ОК»

Курс по SQL для начинающих

Скриншот 3

Свои поля я назвал следующим образом:

  • ФИО – fio;
  • № — number;
  • Должность – dolgn;
  • Адрес проживания – addres;
  • Тел. № сотрудника – phone;
  • Комментарий – comment.

Код макроса на VBA Excel

Для того чтобы написать код макроса, открывайте на ленте вкладку «Разработчик», далее макросы.

Примечание! По умолчанию данной вкладке в Excel 2010 может и не быть, чтобы ее отобразить нажмите правой кнопкой по ленте пункт меню «Настройка ленты»

Скриншот 4

затем, в правой области поставьте галочку напротив пункта «Разработчик»

Скриншот 5

После вкладка разработчик станет отображаться на ленте.

Далее, когда Вы откроете вкладку разработчик и нажмете кнопку «Макросы» у Вас отобразится окно создания макроса, Вы пишите название макросы и жмете «создать».

Скриншот 6

После у Вас откроется окно редактора кода, где собственно мы и будем писать свой код VBA. Ниже представлен код, я его как обычно подробно прокомментировал:

Sub Карточка()
'Книга
NewBook = ""
' Путь, где будут храниться наши карточки
' Т.е. в той папке, откуда запустился файл с макросом
Path = ThisWorkbook.Path
' Выбираем лист с данными
Sheets("Данные").Select
' Запускаем цикл, скажем на 100000 итераций
' Начиная со второй строки, не учитывая заголовок
For i = 2 To 100000
' Выйдем из него, когда фамилии закончатся, т.е. строки
If Cells(i, 1).Value = "" Then
        i = 100000
    Exit For
End If
' Имя файла карточки, назовем по фамилии
Name_file = Path & "" & Sheets("Данные").Cells(i, 1).Value & ".xls"
‘Выбираем лист с шаблоном
Sheets("Шаблон").Select
' Присваиваем значения нашим ячейкам, по именам которые мы задавали
    Range("fio").Value = Sheets("Данные").Cells(i, 1).Value & " " & _
        Sheets("Данные").Cells(i, 2).Value & " " & Sheets("Данные").Cells(i, 3).Value
    Range("number").Value = Sheets("Данные").Cells(i, 4).Value
    Range("addres").Value = Sheets("Данные").Cells(i, 5).Value
    Range("dolgn").Value = Sheets("Данные").Cells(i, 6).Value
    Range("phone").Value = Sheets("Данные").Cells(i, 7).Value
    Range("comment").Value = Sheets("Данные").Cells(i, 8).Value
    ' Копируем все
    Cells.Select
    Selection.Copy
    ' Создаем новую книгу или делаем ее активной 
    If NewBook = "" Then
        Workbooks.Add
        NewBook = ActiveWorkbook.Name
    Else
        Workbooks(NewBook).Activate
        Cells(1, 1).Select
    End If
    ' Вставляем данные в эту книгу
    Application.DisplayAlerts = False
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ' Сохраняем с нашим новым названием
    ActiveWorkbook.SaveAs Filename:= _
    Name_file, FileFormat:=xlExcel8, _
    Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
    CreateBackup:=False
    NewBook = ActiveWorkbook.Name
    Application.DisplayAlerts = True
    ' Снова активируем файл с макросом и выбираем лист
    Workbooks("Макрос.xls").Activate
    Sheets("Данные").Select
' Переходим к следующей строке
Next i
' Закроем книгу
Workbooks(NewBook).Close
' Выведем сообщение об окончании
MsgBox ("Выполнено!")
End Sub

Теперь осталось выполнить этот макрос, для этого откройте вкладку разработчик->макросы->выполнить наш макрос:

Скриншот 7

и после выполнения у Вас в той же папке появится вот такие файлы

Скриншот 8

Вот с таким содержимым:

Скриншот 9

Для удобства можете на листе с данными создать кнопку и задать ей событие выполнить наш только что созданный макрос, и после чего простым нажатием выполнять этот макрос. Вот и все! Удачи!

Содержание

    • 0.1 Создание книги
    • 0.2 Как создать новую книгу?
      • 0.2.1 1 способ
      • 0.2.2 2 способ
      • 0.2.3 3 способ
    • 0.3 Как создать новую книгу на основе шаблона?
    • 0.4 Как создать новую книгу на основе существующей?
  • 1 Создание новой пустой книги
  • 2 Открытие существующей книги Excel
  • 3 Закрепление книги в Excel
  • 4 Использование шаблонов в Excel
    • 4.1 Как создать новую книгу на основе шаблона

Каждая программа и программное обеспечение имеет свою рабочую область. У некоторых это просто страница, у других – лист с определенными параметрами. У Microsoft Excel рабочая область получила название «Книга».

Любое действие в программе начинается с того, что создается новый документ либо открывается уже тот, который есть на устройстве – Книга Microsoft Excel. При создании новой книги можно создать просто пустую рабочую область, а можно воспользоваться уже готовой оформленной книгой из стандартного набора шаблонов Excel.

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

1. Создание нового документа – пустой книги.Для создания нового документа необходимо перейти во вкладку «Файл» и выбрать пункт «Создать». Для быстрого доступа можно использовать сочетание клавиш «Ctrl+N». Оба действия приведут к созданию новой книги и можно будет приступить к работе.

как из листа excel сделать книгу

2. Открытие книги, ранее созданной.Для работы с книгами, которые уже были ранее созданы, и которые находятся на диске в компьютере необходимо снова перейти во вкладку «Файл», но выбрать уже пункт «Открыть». Далее программное обеспечение предложит выбрать путь к нужному файлу через проводник, либо указать путь к файлу на облачном хранилище OneDrive.

как из листа excel сделать книгу

В Excel есть возможность быстро получить доступ к файлу, если он был ранее открыт в программе. Для перехода к рабочей области книги необходимо выбрать вариант «Открыть» — «Последние книги»: здесь будет находиться те документы, которые были сохранены в памяти программы.

как из листа excel сделать книгу

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

Тогда при нажатии на вкладку «Открыть» можно будет без лишних усилий открыть закрепленный документ или папку без дальнейшего поиска.

как из листа excel сделать книгу


3. Шаблоны для создания книг
При создании новой книги очень удобно воспользоваться шаблоном – уже готовым вариантом книги, который будет иметь определенное форматирование и структуру – «Список дел», «Оценка сбережений», «Временная шкала» и так далее.

Данная функция Excel позволяет на порядок ускорить работу, ведь не нужно будет создавать таблицу, думать, что вводить и в какие ячейки, чтобы сформировать – достаточного небольшого редактирование и книга будет готова для работы.

Для создания книги по шаблону достаточно выбрать в пункте «Создать» — один из многочисленных предложенных программой шаблонов.

как из листа excel сделать книгу

После выбора шаблона нажмите «Создать» и книга будет готова к работе.

как из листа excel сделать книгу

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

как из листа excel сделать книгу

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

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

Сохранить книгу можно как непосредственно на локальном устройстве, так и в облачном хранилище OneDrive.


Существует два варианта сохранения рабочей книги:
• «Сохранить» — позволяет сохранить рабочую область книги; при первичном сохранении книги Excel попросит указать название Книги и путь, куда необходимо сохранить документ, после чего сохранение будет автоматически перезаписывать этот файл каждый раз при нажатии на кнопку;


• «Сохранить как» —

позволяет сохранять книгу в качестве новой копии, каждый раз запрашивая путь и название книги.

Чтобы сохранить рабочую книгу необходимо нажать на кнопку в виде дискеты на панели быстрого доступа.

Эта же кнопка активируется при нажатии на сочетание клавиш «Ctrl+S». Ее так же можно вызвать путем перехода по вкладке «Файл» — «Сохранить».

как из листа excel сделать книгу

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

как из листа excel сделать книгу

5. Автоматическое восстановлениеВ программе Excel предусмотрена функция автоматического сохранения книги во временной папке для быстрого восстановления доступа и рабочей области в случае аварийного завершения работы программы или отключения питания устройства.

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

как из листа excel сделать книгу

В случае, если нужного документа в списке не было, можно найти все автоматически сохраненные книги, для этого необходимо перейти по вкладке «Файл» — «Управление версиями» и уже здесь выбрать пункт «Восстановить несохраненные книги».

как из листа excel сделать книгу

Автоматическое сохранение книг происходит каждые 10 минут работы с программным обеспечением. Если программа была закрыта до окончания 10 минут работы, будет предложено автоматическое восстановление.

Для того, чтобы создать рабочую книгу Excel, необходимо выполнить следующие действия:

  1. Нажмите на круглую кнопку Главного меню Excel, расположенную в левом верхнем углу.
  2. В появившемся меню, выберите пункт «Создать».
  3. В открывшемся окне создания рабочей книги Excel, выберите картинку с изображением чистого листа и с надписью «Новая книга».
  4. Нажмите на кнопку «Создать» в правом нижнем углу окна.

Есть еще один способ создания новой рабочей книги Excel — находясь в Excel, нажмите комбинацию клавиш Ctrl+N и новая рабочая книга будет создана.

В результате указанных выше действий будет создана новая рабочая книга Excel.

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

При запуске программы Excel автоматически открывается новый документ, который называется «Книга».

Она состоит из нескольких листов (как правило, трех). В дальнейшем, по ходу работы с программой, можно открывать или создавать новые книги, количество которых практически не ограничено.
Количество окон в книге – 4.
Количество цветов в книге — 16 миллионов цветов (32-битовый спектр с полным доступом к 24-битовому спектру).

Создание книги

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

Как создать новую книгу?

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

1 способ

В окне программы используйте сочетание клавиш Ctrl+N (рекомендуется как самый быстрый способ).

2 способ

как из листа excel сделать книгу

Рис. 2.1. Панель быстрого доступа. Кнопка «Создать»

В окне программы щелкните левой кнопкой мыши по кнопке «Создать» (рис. 2.1) на панели быстрого доступа (если она туда была предварительно помещена).

3 способ

  1. В верхнем левом углу окна программы щелкните по кнопке «Office».
  2. В меню типичных задач выберите пункт «Создать».
  3. В окне «Создание книги» (рис. 2.2) в части «Пустые и последние» дважды щелкните по ярлыку «Новая книга». Или нажмите кнопку «Создать» внизу окна.

как из листа excel сделать книгу

Рис. 2.2. Окно «Создание книги». Ярлык «Новая книга»

Как создать новую книгу на основе шаблона?

  1. В верхнем левом углу окна программы щелкните по кнопке «Office».
  2. В меню типичных команд выберите пункт «Создать».
  3. В окне «Создание книги» в группе «Шаблоны» выберите пункт «Установленные шаблоны».
  4. В группе «Установленные шаблоны» дважды щелкните по ярлыку нужного шаблона (рис. 2.3).

как из листа excel сделать книгу

Рис. 2.3. Окно «Создание книги». Ярлыки шаблонов книг

Как создать новую книгу на основе существующей?

  1. В верхнем левом углу окна программы щелкните по кнопке «Office».
  2. В меню типичных команд выберите пункт «Создать».
  3. В окне «Создание книги» в группе «Шаблоны» выберите пункт «Из существующего документа».
  4. В окне «Создание из имеющейся книги» (рис. 2.4) отыщите файл нужной книги на компьютере (используя строку «Папка») и дважды щелкните по ее значку

как из листа excel сделать книгу

Рис. 2.4. Окно «Создание из имеющейся книги»

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

Файлы Microsoft Excel называются книги. Начиная новый проект в Excel, необходимо создать новую книгу. Существует несколько способов начать работу с документом Excel 2013: создать новую пустую книгу, воспользоваться существующим шаблоном или открыть ранее сохраненный документ.

Создание новой пустой книги

  1. Выберите вкладку Файл. Откроется представление Backstage.как из листа excel сделать книгу
  2. Выберите Создать, затем нажмите Пустая книга.как из листа excel сделать книгу
  3. Откроется новая пустая книга.

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

  1. Перейдите к представлению Backstage, на вкладку Открыть.
  2. Выберите Компьютер, а затем Обзор. Кроме этого Вы можете открыть файлы, хранящиеся в службе OneDrive (ранее SkyDrive).как из листа excel сделать книгу
  3. Появится диалоговое окно Открытие документа. Найдите и выберите нужный файл, а затем нажмите Открыть.

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

Закрепление книги в Excel

Если Вы часто работаете с одним и тем же документом, то удобнее будет закрепить его в представлении Backstage.

  1. Перейдите к представлению Backstage, затем нажмите Открыть. Появятся последние открытые книги.
  2. Наведите указатель мышки на книгу, которую необходимо закрепить. Рядом с ней появится значок в виде канцелярской кнопки. Нажмите на значок.
  3. Книга окажется закрепленной. Для того чтобы снять закрепление, снова нажмите на значок канцелярской кнопки.

Похожим образом в представлении Backstage можно закреплять еще и папки для быстрого доступа к ним. Для этого, находясь в представлении Backstage, перейдите на вкладку Открыть и выберите Компьютер. Найдите папку, которую требуется закрепить, и нажмите на значок канцелярской кнопки.

Использование шаблонов в Excel

Шаблон – это предварительно созданный документ, служащий для ускорения работы. Шаблоны содержат готовые настройки, такие как форматирование и дизайн, с целью экономии времени и сил при создании нового проекта.

Как создать новую книгу на основе шаблона

  1. Откройте вкладку Файл, чтобы перейти к представлению Backstage.
  2. Нажмите Создать. Следом за опцией Пустая книга расположены несколько шаблонов.
  3. Выберите шаблон, чтобы посмотреть его.
  4. Откроется предварительный просмотр и дополнительная информация об использовании шаблона.
  5. Нажмите Создать, чтобы воспользоваться выбранным шаблоном.
  6. Откроется новая книга на основе шаблона.

Шаблон можно подобрать по категории или воспользоваться строкой поиска, чтобы найти более редкий шаблон.

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

Урок подготовлен для Вас командой сайта office-guru.ru
Источник: /> Автор/переводчик: Антон Андронов

Правила перепечаткиЕще больше уроков по Microsoft Excel

Оцените качество статьи. Нам важно ваше мнение:

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