Открытие книги 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 |
#1 06.09.2014 23:19:21 Доброе время суток. Есть книга, в ячейке А1 значение.
Запускаю макрос, создается новая книга сохраняется по пути D:test, присваивается имя 1.xls и закрывается. Проблема в следующем, как переписать макрос, чтобы новая книга сохранялась с названием как в ячейке А1 книги, с которой запускается макрос? |
||
Alexander88 Пользователь Сообщений: 400 |
#2 06.09.2014 23:32:21 Попробуйте заменить пятую строку на:
Изменено: Alexander88 — 06.09.2014 23:32:32 |
||
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#3 06.09.2014 23:35:54
|
||
evgeniy_m Пользователь Сообщений: 109 |
#4 06.09.2014 23:38:01
ошибку дает ( |
||
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#5 06.09.2014 23:39:26
Это не информация — всегда следует указывать — КАКУЮ ошибку получаете. |
||
И пример Юрия с указанием откуда берется ячейка не работает? |
|
evgeniy_m Пользователь Сообщений: 109 |
макрос не компилируеться.. |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
|
The_Prist Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
evgeniy_m, Лист1 в книге с макросом присутствует? Что означает «макрос не компилируется»? Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
evgeniy_m Пользователь Сообщений: 109 |
#10 06.09.2014 23:55:12
супер! Огромное спасибо ! ПОмогите еще с одним моментом, книгу создал, обозвал её как Вы помогли, теперь беда… Хочу с книги откуда запускал макрос скопировать лист (plan) в эту новую книгу с созданым листом «plan_191».
но на строке Set objThisBook = GetObject.ActiveWorkbook дает ошибку…. как мне указать, что нужно копировать лист из книги откуда запускался макрос….? |
||||
Johny Пользователь Сообщений: 2737 |
#11 07.09.2014 00:01:23
Ничего не понятно (а в приложенном макросе вообще какая-то, извините, ерунда). There is no knowledge that is not power |
||
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#12 07.09.2014 00:04:40
|
||
Hugo Пользователь Сообщений: 23249 |
#13 07.09.2014 00:05:00 скопировать лист (plan) в эту новую книгу —
получите новую книгу с одним листом, который затем можете переименовать. |
||
evgeniy_m Пользователь Сообщений: 109 |
Суть такая, открываю книгу, запускаю макрос, создается новая книга и лист в ней. Теперь из 1-й книги нужно скопировать лист в новую книгу. |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
Согласен с Johny: ерунда получается — сначала имя листа «plan», затем «plan_191″… |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
evgeniy_m, у Дмитрия (The_Prist) очень хороший текст в подписи — прочитайте)) |
Может проще создать копию книги, а потом удалить листы кроме нужного? |
|
Hugo Пользователь Сообщений: 23249 |
Кстати хороший вариант сделать копию файла, его открыть, поудалять лишнее. Так и строки не пострадают, и связи… |
evgeniy_m Пользователь Сообщений: 109 |
#19 07.09.2014 00:12:45
Вот написал, все отлично работает, но копирует без сохранения параметров ячеек… |
||
Johny Пользователь Сообщений: 2737 |
#20 07.09.2014 00:14:18 Так?
There is no knowledge that is not power |
||
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
evgeniy_m, Вы читаете, что Вам пишут? |
evgeniy_m Пользователь Сообщений: 109 |
|
Honey Пользователь Сообщений: 204 |
#23 30.05.2017 13:54:20 Всем привет! Надеюсь мой вопрос здесь уместен. Я под основу взяла код, предлагаемый здесь. Но его чуток видоизменила. И теперь у меня проблема-выдает ошибку на строку
А сам код вот
либо
Спасибо Изменено: Honey — 30.05.2017 13:57:38 |
||||||
Honey Пользователь Сообщений: 204 |
Люди добрые! Помогите с проблемой выше, пожалуйста… Интернет обыскала ничего не получается((( |
The_Prist Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
#25 21.06.2017 08:46:59
что за ошибка — нам угадать?
плюс очень желательно указывать формат файла явно:
52 — формат xslm. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||||
Honey Пользователь Сообщений: 204 |
The_Prist, спасибо, что откликнулись! Ошибка Runtime error 1004:: Method ‘Range’ of Global Failed Изменено: Honey — 21.06.2017 08:56:57 |
The_Prist Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
А Вы вдумайтесь в ошибку. В Google-переводчик закиньте. Тогда видно будет, что у Вас проблема в том, что нет диапазона «Книга» или «Об» или другого, чего Вы пишите в Range. Как обратиться к диапазону из VBA Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
Honey Пользователь Сообщений: 204 |
Во вложении файл, в котором этот самый макрос (модуль) Прикрепленные файлы
Изменено: Honey — 21.06.2017 09:06:17 |
Honey Пользователь Сообщений: 204 |
The_Prist, Спасибо за ссылочку)) Изменено: Honey — 21.06.2017 09:09:17 |
The_Prist Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
#30 21.06.2017 09:20:23
нет. Я же написал, что указание Range без явного указания листа и книги в Вашем случае указывает на активный лист. А т.к. Вы это делаете после создания новой книги — то активна именно она, а не что-то там где-то еще. Видимо, читали либо не все, либо не то, либо не так.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||
Как создать новую книгу с заданным именем?
Смотрите также книгу с заданным то как прописать ведущее к нервному
end with
указать, чтобы диапазон Range(«имя_папки»).Value & «» скопировать лист в берется ячейка не больше туда ничего
от сгенерированного имениGustav, 14.01.2015 вEnd Sub
активный лист. АThe_Prist
— прочитайте)): супер! Огромное спасибоnew_see
кол-вом листов Application.SheetsInNewWorkbook
CyberForum.ru
Создание новой книги макросом
макрос, чтобы он срыву. Про шаблоныwith workbooks.add брался конкретно с
& Range(«Книга») & новую книгу. работает? не добавлять, да присвойте ее объектной 15:45, в сообщенииЧитаем внимательно правила т.к. Вы это: что за ошибкаAlexander88 !
: Как создать новую = tmp ‘вернуть все делал то согласен польностью без.sheets(1)… первоначальной книги для «.xlsm»)
Помогите пожалуйста
evgeniy_m и к тому переменной:
№ 5200?’200px’:»+(this.scrollHeight+5)+’px’);»>Я его форума делаете после создания
— нам угадать?: Может проще создатьПОмогите еще с книгу с заданным значение свойстваКстати, добавлять же самое, за комментариев :)…
именования…?Спасибо
Юрий М: макрос не компилируеться.. же отчеты содержатSet MyTempWb=workbooks.add и дополнительно раскрасил множественными
Особенно п.п.3 новой книги -Да и скобки копию книги, а одним моментом, книгу
именем? листы в существующую
исключением копирования даннойРезюме: Моя хотелка
end withСпасибо за ссылочку))Honey: Согласен с Johny:Юрий М
по несколько листов, обращайтесь к ней областями:
Hugo то активна именно здесь лишние. В потом удалить листы создал, обозвал еёНапример книгу тоже можно кнопки. Проще говоря не реализуется безGuestThe_Prist
: Люди добрые! ерунда получается -: Мой вариант проверяли? а работа в дальше MyTempWb.sheets(1)…Красиво раскрасил, но: В новый эксель она, а не VBA методы без кроме нужного? как Вы помогли,Sub CreateWorkbook() Set не по одному: — без этой дополнительных телодвижений. Тема: Есть файл данных: нет. Я же
Помогите с проблемой сначала имя листаThe_Prist одной книге сИли с помощью
оказалось достаточным кода вставить скопированные столбцы что-то там где-то присвоения результата переменнойHugo теперь беда… Хочу NewWorkbook = Workbooks.Add Sheets.Add after:=ActiveSheet, Count:=200Параметр кнопки.
закрыта. в процессе работы написал, что указание выше, пожалуйста… Интернет
«plan», затем «plan_191″…: evgeniy_m, Лист1 в 30-40 листами удовольствие конструкции with …
у alex77755) будет проблематично - еще. Видимо, читали указываются без скобок:: Кстати хороший вариант с книги откуда End Subсоздает книгу
Count тоже вПрикрепил файлСпасибо всем за создаются отчеты (промежуточные), Range без явного обыскала ничего неЮрий М книге с макросом ведущее к нервному
end with
Друзья, вставляйте в тот либо не все,New_Wb.SaveAs Range(«O6») & сделать копию файла,
запускал макрос скопировать с именем по пределах 1..255.gling помощь!
которые открываются в указания листа и получается(((: evgeniy_m, у Дмитрия присутствует? Что означает
срыву. Про шаблоныwith workbooks.addогромное спасибо же эксель. Т.е. либо не то, «» & Range(«Книга») его открыть, поудалять
лист (plan) в умолчанию,Hugo121: Пропишите такikki новых книгах. После книги в ВашемВся надежда на (The_Prist) очень хороший «макрос не компилируется»? согласен польностью без.sheets(1)…за помощь! Я Ваш код почти
либо не так. & «.xlsm»
лишнее. Так и эту новую книгуа как изменить: На практике обычно200?’200px’:»+(this.scrollHeight+5)+’px’);»>shSmeta.Copy Before:=bkNew.Sheets(1): гм… работы все это случае указывает на
Вас текст в подписиevgeniy_m
комментариев :)…
недели две блуждал полностью не годится,
New_Wb.SaveAs ThisWorksbook.Sheets(«1 норм»).Range(«O6»)плюс очень желательно строки не пострадают, с созданым листом имя, чтобы создалась нужноActiveSheet.Shapes(«Button 1»).Deleteа вот так? без сохранения удаляется.
активный лист. АThe_Prist
— прочитайте)): супер! Огромное спасибоРезюме: Моя хотелкаend with в интернете и нужно переписывать.
& «» &
указывать формат файла и связи… «plan_191». не ‘Книга1’,Set xlWb =bkNew.SaveAs ThisWorkbook.Path &Sub xx()
Проблема в том,
т.к. Вы это: что за ошибка
Alexander88 ! не реализуется безGuest
не мог найтиalex77755
ThisWorksbook.Sheets(«1 норм»).Range(«Книга») & явно:evgeniy_m
Dim sShName Asа например ‘Моя Workbooks.Add(1) ‘создать книгу «» & CStr(shAct.Range(«B19»).Value)Set wb =
что когда отчетов делаете после создания — нам угадать?
: Может проще создатьПОмогите еще с дополнительных телодвижений. Тема
: Есть файл данных подходящий код, все:
«.xlsm», 52New_Wb.SaveAs Range(«O6») &
: Dim sShName As String, sAddress As книга’
с одним листомДалее & «.xlsx» Workbooks.Add
10 и более, новой книги -Да и скобки копию книги, а одним моментом, книгу закрыта. в процессе работы остальные не подходили,200?’200px’:»+(this.scrollHeight+5)+’px’);»>Public Sub nytfjdkt()Дмитрий_С «» & Range(«Книга»)
String, sAddress As String, vData Dimnew_see можно листы добавить,bkNew.Closewb.Windows(1).Caption = «fryerye» а все названия то активна именно здесь лишние. В потом удалить листы создал, обозвал еёСпасибо всем за
создаются отчеты (промежуточные), а ошибку в
Dim oWbk As: Добрый день! & «.xlsm», 52 String, vData Dim
objThisBook As Object: NewWorkbook.Windows(1).Caption = ‘Моя
но это нужноНо думаю чтоEnd Sub Книга1, Книга2 и она, а не VBA методы без кроме нужного? как Вы помогли, помощь! которые открываются в них я не Excel.WorkbookУ меня имеется52 — формат
objThisBook As Object
Set objThisBook = книга’ редко. лучше кнопку иYuryK т.д. запомнить где что-то там где-то присвоения результата переменнойHugo теперь беда… Хочуikki новых книгах. После мог найти. ДанныйDim oSheet As файл из которого xslm. Set objThisBook = GetObject.ActiveWorkbook sAddress =спасибоSerg_FSM список выбора сметы: А вот так
planetaexcel.ru
Как вставить данные из старой книги в новую созданную книгу (Макросы/Sub)
какой очень проблематично, еще. Видимо, читали
указываются без скобок:: Кстати хороший вариант с книги откуда: гм… работы все это
код это именно Excel.Worksheet мне необходимо скопироватьHoney GetObject(«d:test.xls») sAddress = «A1:AA6000» vData =evgeniy_m: Приветствую. разместить вверху сметы. получилось именно то, приходится все книги
либо не все,New_Wb.SaveAs Range(«O6») &
сделать копию файла,
запускал макрос скопировать
а вот так? без сохранения удаляется. то, что мне
Dim Sh As
некоторые столбцы в
: The_Prist, спасибо, что "A1:AA6000" vData =
objCloseBook.Sheets("plan").Range(sAddress).Value objThisBook.Close False
: Доброе время суток.
Помогите с такой
Кнопку привязать к что нужно. перебирать, вот и
либо не то, "" & Range("Книга")
его открыть, поудалять лист (plan) вSub xx()
Проблема в том, надо. Всё работает!
Excel.Worksheet новую созданную книгу.
откликнулись! objThisBook.Sheets("abs_plan").Range(sAddress).Value Sheets("abs_plan_191").Range("A1").Resize(UBound(vData, 1),
Sheets("plan_191").Range("A1").Resize(UBound(vData, 1), UBound(vData, Есть книга, в проблемой: нужно програмно
строкам и приСпасибо огромное! хочется имена присваивать.
либо не так. & ".xlsm"
лишнее. Так и эту новую книгуSet wb =
что когда отчетовHugoSet Sh =Данный код нашелОшибка Runtime error UBound(vData, 2)).Value =
2)).Value = vDataно
ячейке А1 значение. создать новую рабочую
копировании сметы удалять
den45444А без сохранения New_Wb.SaveAs ThisWorksbook.Sheets(«1 норм»).Range(«O6»)плюс очень желательно строки не пострадают, с созданым листом Workbooks.Add 10 и более,: Т.е. нужно было
ActiveSheet в интернете, не 1004:: Method 'Range'
vDataВот написал, все на строке Set
Sub New2() Dim книгу Excel, но
верхнею строку или: Есть макрос на
никак? В принципе & "" &
указывать формат файла и связи...
"plan_191".wb.Windows(1).Caption = "fryerye"
а все названия только вот это?Set oWbk =
могу в нем of Global Failed отлично работает, но
objThisBook = GetObject.ActiveWorkbook
New_Wb As Workbook
при этом с строки. Удалится и создание новой книги.
вопрос не критичный, ThisWorksbook.Sheets(«1 норм»).Range(«Книга») & явно:evgeniy_mDim sShName AsEnd Sub Книга1, Книга2 и200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub tt() Workbooks.Add() сделать новую книгуThe_Prist копирует без сохранения дает ошибку…. как Set New_Wb =
определенным именем (а
список и кнопка
Его нужно немного но не хочется
".xlsm", 52
New_Wb.SaveAs Range("O6") &: Dim sShName As
String, sAddress As
YuryK т.д. запомнить гдеDim r AsSet oSheet =
активной чтобы в: А Вы вдумайтесь параметров ячеек...
мне указать, что Workbooks.Add New_Wb.Activate New_Wb.SaveAs
не тем что
вызова макроса.
изменить под условие.
каждый раз выбиратьYuryK «» & Range(«Книга») String, sAddress As
String, vData Dim: А вот так какой очень проблематично, Range oWbk.Worksheets(«Лист1») ‘Находим Лист1 ней работать, например
в ошибку. ВJohny нужно копировать лист
(«D:test» & «1» Excel предлагает поden45444Подробно: в проводнике пусть: Добрый день! Прошу & «.xlsm», 52 String, vData Dim objThisBook As Object получилось именно то, приходится все книги’——Копирование столбцов изoSheet.Name = «Новый как вставить данные
Google-переводчик закиньте. Тогда: Так? из книги откуда
& ".xls") New_Wb.Close
умолчанию), без использования:
- Есть книга и сохранять, а помощи в таком
52 - формат objThisBook As Object
Set objThisBook =
что нужно.
excelworld.ru
Можно ли создать Workbook со своим именем?
перебирать, вот и старой книги в лист» ‘Присваиваем ему из буфера обмена, видно будет, чтоSub F() Dim
запускался макрос….? End SubЗапускаю макрос, шаблона и безgling и в этой потом так же вопросе. Создаю книги xslm. Set objThisBook = GetObject.ActiveWorkbook sAddress =Спасибо огромное!
хочется имена присваивать. новую книгу———-
имя «Новый лист» т.к. активной книгой
у Вас проблема wkbNew As WorkbookJohny
создается новая книга сохранения файла. Нужно, Благодарю за помощь.
книги есть лист удалять. из vba коммандойHoney GetObject(«d:test.xls») sAddress = «A1:AA6000» vData =
evgeniy_mА без сохраненияSet r =’——Копирование столбцов из остается та из в том, что Sheets(«plan»).Copy Set wkbNew: Ничего не понятно сохраняется по пути это вот дляRAN «Смета» и естьLightZ
Workbooks.Add: The_Prist, спасибо, что «A1:AA6000» vData =
objCloseBook.Sheets(«plan»).Range(sAddress).Value objThisBook.Close False: Доброе время суток. никак? В принципе
ActiveSheet.Range(«A:H»)
старой книги в
которой копирую столбцы
нет диапазона «Книга»
= ActiveWorkbook wkbNew.Sheets(1).Name (а в приложенном D:test, присваивается имя чего: обработчик события: кнопка на другом: Попробуйте такой вариант…Возможно ли создать откликнулись! objThisBook.Sheets(«abs_plan»).Range(sAddress).Value Sheets(«abs_plan_191»).Range(«A1»).Resize(UBound(vData, 1), Sheets(«plan_191»).Range(«A1»).Resize(UBound(vData, 1), UBound(vData, Есть книга, в вопрос не критичный,r.Copy Workbooks.Add.Sheets(1).Range(«A1») новую книгу———-Помогите, пожалуйста. (В или «Об» или = «plan_191» wkbNew.SaveAs
макросе вообще какая-то, 1.xls и закрывается. проверяет есть ли200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub Макрос1() листе «создать новуюDim x As книгу с именемОшибка Runtime error UBound(vData, 2)).Value =
2)).Value = vDataно ячейке А1 значение.
но не хочетсяEnd Sub
Sh.Range(«A:H»).Copy oSheet.Range(«A1») VBA я новичок)
другого, чего Вы «D:test» & ThisWorkbook.Sheets(«Лист1»).Range(«A1»)
извините, ерунда).Проблема в следующем,
среди открытых книг’ отключить копирование
смету».
String
отличным от КнигаN.
1004:: Method ‘Range’ vDataВот написал, все на строке SetSub New2() Dim каждый раз выбиратьYuryKEnd Sub200?’200px’:»+(this.scrollHeight+5)+’px’);»> пишите в Range. & «.xls» EndЮрий М как переписать макрос, книга с определенным
объектов
- Нажимая на
Dim i As Или как-то переименовать of Global Failed отлично работает, но objThisBook = GetObject.ActiveWorkbook New_Wb As Workbook в проводнике пусть: Добрый день! Прошуalex77755Public Sub nytfjdkt()Так же надо Sub: Sub New2() Dim чтобы новая книга именем, если естьApplication.CopyObjectsWithCells = False этот макрос, создается Long созданную книгу сразуThe_Prist
копирует без сохранения дает ошибку…. как Set New_Wb = и сохранять, а
помощи в таком: А надо ли
’——Копирование столбцов из помнить, что указание
Юрий М
New_Wb As Workbook
сохранялась с названием он добавляет в
’ включить копирование
новая книга и
On Error Resume после создания. Основная: А Вы вдумайтесь параметров ячеек…
мне указать, что
planetaexcel.ru
Создание новой книги макросом
Workbooks.Add New_Wb.Activate New_Wb.SaveAs потом так же вопросе. Создаю книги их туда ложить?
старой книги в Range явного указания: evgeniy_m, Вы читаете, Set New_Wb = как в ячейке нее новые данные, объектов лист «Смета» копируется Next сложность (для меня) в ошибку. В
Johny нужно копировать лист («D:test» & «1» удалять. из vba коммандойGustav новую книгу———-
для него листа
что Вам пишут? Workbooks.Add ThisWorkbook.Sheets(«plan»).Copy New_Wb.Sheets.Add А1 книги, с
если нет, тоApplication.CopyObjectsWithCells = True в эту книгу,
For i = в том, что Google-переводчик закиньте. Тогда: Так? из книги откуда & «.xls») New_Wb.CloseLightZ Workbooks.Add
: Вставлю свои 5Range(«A:H,S:S,U:U,W:W,AQ:AQ,AE:AE,AF:AF,AY:AY,BA:BA,BG:BG,BH:BH,BI:BI»).Select
и книги подразумеваетevgeniy_m After:=New_Wb.Sheets(Sheets.Count) New_Wb.SaveAs («D:test» которой запускается макрос? он сначала ее
End Sub сохраняет и закрывает. 1 To 10 книгу надо переназвать, видно будет, что
Sub F() Dim запускался макрос….?
End SubЗапускаю макрос,: Попробуйте такой вариант…
Возможно ли создать копеек. Для создания’Range( _ обращение к АКТИВНОЙ: Johny, спасибо!
& ThisWorkbook.Sheets(«Лист1»).Range(«A1») &Заранее спасибо! создает и затем
PuLbKa- Название новойx = Application.UserName но не надо у Вас проблема wkbNew As WorkbookJohny создается новая книгаDim x As книгу с именем новой книги новый
»Таблица_beta_newbooksql_Rebus_vwDefect[[#Headers],[Сумма дельта приходная, книге. А ВыHoney «.xls») New_Wb.Close EndAlexander88 добавляет данные.: Не могу понять книги указывается в & i сохранять. в том, что Sheets(«plan»).Copy Set wkbNew: Ничего не понятно сохраняется по пути String отличным от КнигаN. Excel не нужен.
руб.]]» _ её только что: Всем привет! Sub: Попробуйте заменить пятую
serb как задать количество самом макросе, т.е.NextЗаранее благодарен за нет диапазона «Книга» = ActiveWorkbook wkbNew.Sheets(1).Name (а в приложенном D:test, присваивается имя
Dim i As Или как-то переименовать И в буфер).Activate
создали. Следовательно тамНадеюсь мой вопросHugo строку на:
: Создайте новую процедуру страниц при создании всегда под однимWorkbooks.Add любую помощь! или «Об» или = «plan_191» wkbNew.SaveAs
макросе вообще какая-то, 1.xls и закрывается. Long созданную книгу сразу обмена через Selection.CopySelection.Copy НЕТ ИМЕНОВАННЫХ ДИАПАЗОНОВ, здесь уместен. Я: скопировать лист (plan)
New_Wb.SaveAs («D:test» &
УпрЛабРаб9, которая должна нового excel-файла названием.ActiveWorkbook.SaveAs Filename:=xvikttur
другого, чего Вы «D:test» & ThisWorkbook.Sheets(«Лист1»).Range(«A1») извините, ерунда).Проблема в следующем,On Error Resume
после создания. Основная — тоже не’————СОЗДАНИЕ НОВОЙ КНИГИ————— да и вообще под основу взяла
в эту новую Cells(1, 1) & выполнить следующие действия:Содаю я егоА мне нужноKuklP: В чем разница:
пишите в Range. & «.xls» EndЮрий М как переписать макрос, Next сложность (для меня) наш метод. НашDim oExcel As данных. код, предлагаемый здесь. книгу - «.xls»)• создать новую так
так, чтобы название: Полный изврат. Почему
- создали книгу,Так же надо Sub: Sub New2() Dim чтобы новая книгаFor i = в том, что метод — как
New Excel.Application ‘ЗапускаемСоветую очень внимательно Но его чуток
sheets(«plan»).copy получите новуюЮрий М
рабочую книгу;Dim xlWb As
новой книги бралось не создавать листы не сохранили, больше помнить, что указаниеЮрий М New_Wb As Workbook сохранялась с названием 1 To 10 книгу надо переназвать,
у Excel
изучить: видоизменила. И теперь книгу с одним: Sub New2() Dim• вставить в Excel.Workbook Set xlWb
с ячейки (в
а не книги? никаких действий; Range явного указания: evgeniy_m, Вы читаете, Set New_Wb = как в ячейкеx = Application.UserName
но не надо
alex77755oExcel.Visible = True
Honey у меня проблема-выдает листом, который затем New_Wb As Workbook
эту книгу новый = Workbook.Add
примере видно - И именуйте их- создали книгу,
для него листа что Вам пишут? Workbooks.Add ThisWorkbook.Sheets(«plan»).Copy New_Wb.Sheets.Add А1 книги, с & i
сохранять.. Я его дополнительно ‘Делаем его видимым
: Во вложении файл, ошибку на строку можете переименовать.
Set New_Wb = рабочий лист;Все получилось
ячейка E7) как хотите. А
переименовали, сохранили, больше и книги подразумеваетevgeniy_m
After:=New_Wb.Sheets(Sheets.Count) New_Wb.SaveAs («D:test» которой запускается макрос?Next
Заранее благодарен за раскрасил множественными областями:Dim oWbk As в котором этот New_Wb.SaveAsТолько при таком Workbooks.Add New_Wb.Activate New_Wb.SaveAs• дать новомуS.V.I.N.Пример прикрепляю. уже потом, то
никаких действий? обращение к АКТИВНОЙ: Johny, спасибо! & ThisWorkbook.Sheets(«Лист1»).Range(«A1″) &Заранее спасибо!Workbooks.Add любую помощь!200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub copy2() Excel.Workbook ‘Создаем новую самый макрос (модуль)А сам код копировании пострадают длинные
(«D:test» & ThisWorkbook.Sheets(«Лист1»).Range(«A1») рабочему листу ваше
: Количество страниц можноЖду помощи. что нужно, переноситьЕсли книга не
книге. А ВыHoney
«.xls») New_Wb.Close EndAlexander88ActiveWorkbook.SaveAs Filename:=xviktturDim oSheetAs Worksheet книгу Книга1Honey вот строки в ячейках, & «.xls») New_Wb.Close имя; увеличивать следующим образом.ShAM в новую книгу
нужна, ее можно
её только что: Всем привет! Sub: Попробуйте заменить пятуюKuklP: В чем разница:Dim srcRange AsSet oWbk =: The_Prist,Dim New_Wb As если они конечно End Sub• сохранить рабочуюfor i=0 to: Замените: и сохранять ее. после определенных с создали. Следовательно тамНадеюсь мой вопросHugo строку на:: Полный изврат. Почему
planetaexcel.ru
Можно ли создать Workbook со своим именем?
- создали книгу, Range oExcel.Workbooks.Add()Об этом я Workbook Set New_Wb есть. Хотя в
evgeniy_m книгу под именем x With New_Ex200?’200px’:»+(this.scrollHeight+5)+’px’);»>Const strNewBook As String Или насоздавайте шаблонов(изврат, ней действий удалить. НЕТ ИМЕНОВАННЫХ ДИАПАЗОНОВ, здесь уместен. Я: скопировать лист (plan)New_Wb.SaveAs («D:test» & не создавать листы
не сохранили, большеDim areaAs Range
Dim oSheet As читала… Видимо, действительно,
= Workbooks.Add New_Wb.Activate новых экселях не: ошибку дает (
УпрЛабРаб9. Sheets.Add After:=Sheets(Sheets.Count) end = «Смета-1.xlsx» ‘имя
но если очень Так же незаметно, да и вообще под основу взяла в эту новую Cells(1, 1) &
а не книги? никаких действий;Set srcRange = Excel.Worksheet я чего-то не New_Wb.SaveAs (Range(«O6») & проверял…Юрий МВыполните процедуру. Откройте With next iгде нового файла хочется…) и добавляйте: как и создали.
данных. код, предлагаемый здесь. книгу -
«.xls») И именуйте их- создали книгу,
Intersect(ActiveSheet.UsedRange, _
Set oSheet =
понимаю((( У меня
«» & Range(«Книга»)
evgeniy_m: Это не информация рабочую книгу УпрЛабРаб9 х — этона: Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>Dim strNewBookWorkbooks.Add Template:= «C:Templatesежик.xlt»KuklPСоветую очень внимательно Но его чутокsheets(«plan»).copy получите новуюЮрий М как хотите. А переименовали, сохранили, большеRange(«A:H,S:S,U:U,W:W,AQ:AQ,AE:AE,AF:AF,AY:AY,BA:BA,BG:BG,BH:BH,BI:BI»)) oWbk.Worksheets.Item(«Лист1») ‘Находим Лист1 есть такие диапазоны. & «.xlsm»): Суть такая, открываю
— всегда следует и введите несколько кол-во циклов (требуемое As String:-): А какой в изучить: видоизменила. И теперь книгу с одним
: Sub New2() Dim уже потом, то
никаких действий?Set oSheet =
oSheet.Name = «Новый И я ведь
либо книгу, запускаю макрос,
указывать — КАКУЮ значений в рабочий
кол-во листов)strNewBook = [e7].Value
Guest
этом смысл, если
Honey
у меня проблема-выдает листом, который затем New_Wb As Workbook что нужно, переноситьЕсли книга не Workbooks.Add.Worksheets(«Лист1″) ‘Создаем новую лист» ‘Присваиваем ему указываю на именаDim New_Wb As создается новая книга ошибку получаете. лист с вашимКазанский
& «.xlsx» ‘имя
: Согласен и нет
сохранятm ее не: Во вложении файл, ошибку на строку можете переименовать. Set New_Wb = в новую книгу нужна, ее можно книгу и находим имя «Новый лист» диапазонов не в Workbook Set New_Wb и лист вAlexander88 именем. Создайте новую: Ладно, раз ТС нового файла одновременно. Листы можно, надо? Предполагаю, что в котором этот New_Wb.SaveAs
Только при таком Workbooks.Add New_Wb.Activate New_Wb.SaveAs и сохранять ее. после определенных с
Лист1Dim oRange As
ново-созданной книге. Или = Workbooks.Add New_Wb.Activate
ней. Теперь из
: И пример Юрия
процедуру с именем не написал, что
Karataev
но не хочется
нужно Вам совсем самый макрос (модуль)А сам код копировании пострадают длинные
(«D:test» & ThisWorkbook.Sheets(«Лист1»).Range(«A1»)
planetaexcel.ru
Создание новой книги (название книги из ячейки) (Макросы/Sub)
Или насоздавайте шаблонов(изврат, ней действий удалить.oSheet.Name = «Новый Range ‘Находим диапазон как мне конкретней
New_Wb.SaveAs («M:ProductionМастера2017Нормализация» &
1-й книги нужно с указанием откуда СохрЛабРаб9. Эта процедура там у него: Смотрите прикрепленный файл т.к. в основном не это. Что
Honey вот строки в ячейках, & «.xls») New_Wb.Close но если очень Так же незаметно,
лист» ‘Присваиваем ему A1 в Книга1 указать, чтобы диапазон Range(«имя_папки»).Value & «» скопировать лист в
берется ячейка не должна определить, сохранена получилось, я напишу,den45444 файле их хватает бы дальше в
: The_Prist,
Dim New_Wb As
если они конечно End Sub хочется...) и добавляйте: как и создали. имя "Новый лист"
Set oRange = брался конкретно с
& Range(«Книга») & новую книгу. работает?
ли рабочая книга как буквально «задать»:
: и суть именно коде обращаться кОб этом я Workbook Set New_Wb есть. Хотя вevgeniy_m
Workbooks.Add Template:= «C:Templatesежик.xlt»KuklPFor Each area oSheet.Range(«A1») первоначальной книги для «.xlsm»)Помогите пожалуйстаevgeniy_m после внесе¬ния в Dim tmp tmpShAM в том чтобы
новой книге независимо
читала… Видимо, действительно, = Workbooks.Add New_Wb.Activate новых экселях не
: ошибку дает (
:-): А какой в In srcRange.Areas
'----------На данном этапе
именования…?СпасибоЮрий М: макрос не компилируеться.. нее изменений. Если = Application.SheetsInNewWorkbook ‘сохранить, больше туда ничего от сгенерированного имени я чего-то не New_Wb.SaveAs (Range(«O6») &
проверял…Юрий МGuest этом смысл, если
area.Copy oSheet.Range(area.Address) я хочу вставитьСпасибо за ссылочку))
Honey: Согласен с Johny:
Юрий М
книга была сохранена, свойство "число листов
Karataev
не добавлять, да
excelworld.ru
Задать количество листов при создании нового excel-файла
присвойте ее объектной понимаю((( У меня «» & Range(«Книга»)evgeniy_m: Это не информация
: Согласен и нет сохранятm ее не
Next данные из буфераThe_Prist
: Люди добрые!
ерунда получается -: Мой вариант проверяли? то должно выводиться
в новой книге», Благодарю за скорую и к тому переменной: есть такие диапазоны. & «.xlsm»): Суть такая, открываю
— всегда следует одновременно. Листы можно, надо? Предполагаю, чтоEnd SuboRange.Value = «Начиная: нет. Я жеПомогите с проблемой сначала имя листаThe_Prist окно с соот¬ветствующим Application.SheetsInNewWorkbook = 200 помощь. же отчеты содержатSet MyTempWb=workbooks.add и И я ведьлибо книгу, запускаю макрос, указывать — КАКУЮ но не хочется нужно Вам совсемДмитрий_С с этой ячейки написал, что указание выше, пожалуйста… Интернет «plan», затем «plan_191″…
: evgeniy_m, Лист1 в сообщением. Выполните эту ‘установить новое значение
А если эту по несколько листов, обращайтесь к ней указываю на именаDim New_Wb As создается новая книга
CyberForum.ru
Создание новой книги Excel с заданным именем
ошибку получаете. т.к. в основном
не это. Что: Благодаря твоему коду я хочу вставить Range без явного обыскала ничего неЮрий М книге с макросом процедуру. свойства в пределах кнопку поставить на а работа в дальше MyTempWb.sheets(1)… диапазонов не в Workbook Set New_Wb и лист вAlexander88 файле их хватает бы дальше в оказалось что не диапазон из буфера» указания листа и получается(((: evgeniy_m, у Дмитрия
CyberForum.ru
Создать новую рабочую книгу
присутствует? Что означаетAlex77755 1..255 Set xlWb тот лист который
одной книге сИли с помощью
ново-созданной книге. Или = Workbooks.Add New_Wb.Activate ней. Теперь из
: И пример Юрия и суть именно коде обращаться к
надо! ‘вносим в него книги в Вашем
Вся надежда на (The_Prist) очень хороший «макрос не компилируется»?: А что мешает = Workbooks.Add ‘создать копируется (лист «Смета»), 30-40 листами удовольствие конструкции with … как мне конкретней New_Wb.SaveAs («M:ProductionМастера2017Нормализация» & 1-й книги нужно с указанием откуда в том чтобы новой книге независимоЦитата данные случае указывает на
Вас текст в подписиevgeniy_m
CyberForum.ru
включить макрорекордер?
Нижеследующий код позволяет создать новую книгу Excel из листов текущей книги, содержащей макросы. Также удаляются ненужные кнопки.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Sub ToNewFile() pathNewBook = "C:Temp" 'Путь сохранения новой книги nameNewBook = "Название книги (" & Format(Now, "MMMM YYYY") & ").xlsx" Application.ScreenUpdating = False Application.DisplayAlerts = False Application.SheetsInNewWorkbook = 1 'Количество листов в новой книге Set NewWB = Workbooks.Add ThisWorkbook.Activate Sheets("Лист 1").Copy Before:=NewWB.Sheets(1) NewWB.Sheets(2).Delete 'Удаляем кнопки NewWB.Sheets("Лист 1").Shapes.Range(Array("cbButtonName")).Delete NewWB.SaveAs Filename:=pathNewBook & nameNewBook NewWB.Close True 'Сохраняем Application.CutCopyMode = False If Dir(pathNewBook & nameNewBook) <> "" Then MsgBox "Создан файл: " & pathNewBook & nameNewBook Else MsgBox "Не удалось создать файл!" End If End Sub |
Sub ToNewFile() pathNewBook = "C:Temp" 'Путь сохранения новой книги nameNewBook = "Название книги (" & Format(Now, "MMMM YYYY") & ").xlsx" Application.ScreenUpdating = False Application.DisplayAlerts = False Application.SheetsInNewWorkbook = 1 'Количество листов в новой книге Set NewWB = Workbooks.Add ThisWorkbook.Activate Sheets("Лист 1").Copy Before:=NewWB.Sheets(1) NewWB.Sheets(2).Delete 'Удаляем кнопки NewWB.Sheets("Лист 1").Shapes.Range(Array("cbButtonName")).Delete NewWB.SaveAs Filename:=pathNewBook & nameNewBook NewWB.Close True 'Сохраняем Application.CutCopyMode = False If Dir(pathNewBook & nameNewBook) <> "" Then MsgBox "Создан файл: " & pathNewBook & nameNewBook Else MsgBox "Не удалось создать файл!" End If End Sub
Полезные ссылки
- Как средствами VBA переименовать/переместить/скопировать файл
- Permission Denied, Error 70 When You Use FileCopy Statement
Комментировать
На чтение 3 мин. Просмотров 11.1k.
Что делает макрос: Следующий макрос копирует диапазон ячеек из активного листа и вставляет данные в новую книгу.
Содержание
- Код макроса
- Как работает этот код
- Как использовать
Код макроса
Sub SozdatFajl() 'Шаг 1 - копируем данные с листа Sheets("Продажи").Range("B4:C15").Copy 'Шаг 2 - создаем новую книгу Workbooks.Add 'Шаг 3 - вставляем данные ActiveSheet.Paste Destination:=Range("A1") 'Шаг 4 - отключаем системные сообщения Application.DisplayAlerts = False 'Шаг 5 - сохраняем по нужному адресу ActiveWorkbook.SaveAs _ Filename:="C:ОтчетыПродажиМесяц.xlsx" 'Шаг 6 - включаем системные сообщения Application.DisplayAlerts = True End Sub
Как работает этот код
- Копируем данные из ячеек B4:С15. Обратите внимание, что мы указываем полный адрес с именем листа и диапазона. Это позволит не допустить ошибки, если у Вас открыто несколько файлов Excel одновременно.
- Используем метод Add объекта Workbook, чтобы создать новую рабочую книгу. Это тоже самое, если бы мы вручную нажали Файл➜Создать➜Новый документ
- На этом этапе используется метод Paste, чтобы отправить данные, которые вы скопировали в ячейку А1 новой книги. Обратите внимание на то, что код ссылается на объект ActiveSheet. При создании новой книги она тут же становится активной. Если быть точнее, то становится активный лист в новой (только что созданной) книге.
- Далее используем метод DisplayAlerts. Используя свойство False — отключаем системные предупреждения Excel. Можно этого не делать, но мы можем запустить этот макрос несколько раз, и в этом случае Excel будет пытаться сохранить один и тот же файл несколько раз. Что происходит, когда вы пытаетесь сохранить книгу несколько раз? Правильно — Excel предупреждает, что в папке уже есть файл с таким же именем и спрашивает: «Хотите ли вы переписать ранее существующий файл?». Если мы не хотим, чтобы Excel при каждом сохранении спрашивал нас — подавляем это предупреждение.
- Сохраняем файл с помощью метода SaveAs. Обратите внимание, что мы пишем полный адрес, включая имя файла с расширением (при сохранении на рабочий стол
ActiveWorkbook.SaveAs CreateObject(«WScript.Shell»). SpecialFolders(«Desktop») & «Отчет на 2016.xlsx»). - Поскольку мы запретили показывать системные сообщения в пункте 4, мы должны включить их обратно. Если этого не сделать Excel будет подавлять все предупреждения, что не
допустимо.
Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
- Выберите Insert➜Module.
- Введите или вставьте код во вновь созданном модуле.
- Измените имя листа, диапазон ячеек, и место сохранения файла.