Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1 2 След.
RSS
Создание новой книги макросом
 
Доброе время суток. Есть книга, в ячейке А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 книги, с которой запускается макрос?
Заранее спасибо!
 
Попробуйте заменить пятую строку на:
Код
New_Wb.SaveAs ("D:\test\" & Cells(1, 1) & ".xls")
Изменено: Alexander88 - 6 сен 2014 23:32:32
 
Код
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

 
 
Цитата
Alexander88 пишет: заменить пятую строку на:
ошибку дает (
 
Цитата
evgeniy_m пишет: ошибку дает
Это не информация - всегда следует указывать - КАКУЮ ошибку получаете.
 
И пример Юрия с указанием откуда берется ячейка не работает?
 
макрос не компилируеться..
 
Мой вариант проверяли?
 
evgeniy_m, Лист1 в книге с макросом присутствует? Что означает "макрос не компилируется"?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Юрий М пишет: Мой вариант проверяли?
супер! Огромное спасибо !

ПОмогите еще с одним моментом, книгу создал, обозвал её как Вы помогли, теперь беда... Хочу с книги откуда запускал макрос скопировать лист (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 дает ошибку.... как мне указать, что нужно копировать лист из книги откуда запускался макрос....?
 
Цитата
evgeniy_m пишет:
Хочу с книги откуда запускал макрос скопировать лист (plan) в эту новую книгу с созданым листом "plan_191".
Ничего не понятно (а в приложенном макросе вообще какая-то, извините, ерунда). :)
There is no knowledge that is not power
 
Код
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

 
 
скопировать лист (plan) в эту новую книгу -
Код
sheets("plan").copy
 
получите новую книгу с одним листом, который затем можете переименовать.
Только при таком копировании пострадают длинные строки в ячейках, если они конечно есть. Хотя в новых экселях не проверял...
 
Суть такая, открываю книгу, запускаю макрос, создается новая книга и лист в ней. Теперь из 1-й книги нужно скопировать лист в новую книгу.
Помогите пожалуйста  :)
 
Согласен с Johny: ерунда получается - сначала имя листа "plan", затем "plan_191"...
 
evgeniy_m, у Дмитрия (The_Prist) очень хороший текст в подписи - прочитайте))
 
Может проще создать копию книги, а потом удалить листы кроме нужного?
 
Кстати хороший вариант сделать копию файла, его открыть, поудалять лишнее. Так и строки не пострадают, и связи...
 
Код
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
 
Вот написал, все отлично работает, но копирует без сохранения параметров ячеек...
 
Так?

Код
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
 
evgeniy_m, Вы читаете, что Вам пишут?
 
Johny, спасибо!
 
Всем привет!

Надеюсь мой вопрос здесь уместен. Я под основу взяла код, предлагаемый здесь. Но его чуток видоизменила. И теперь у меня проблема-выдает ошибку на строку
Код
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")


Спасибо
Изменено: Honey - 30 май 2017 13:57:38
 
Люди добрые!

Помогите с проблемой выше, пожалуйста... Интернет обыскала ничего не получается(((
Вся надежда на Вас :(
 
Цитата
Honey написал:
выдает ошибку
что за ошибка - нам угадать?
Да и скобки здесь лишние. В VBA методы без присвоения результата переменной указываются без скобок:
Код
New_Wb.SaveAs Range("O6") & "\" & Range("Книга") & ".xlsm"

плюс очень желательно указывать формат файла явно:
Код
New_Wb.SaveAs Range("O6") & "\" & Range("Книга") & ".xlsm", 52

52 - формат xslm.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist,  спасибо, что откликнулись!

Ошибка Runtime error 1004:: Method 'Range' of Global Failed
Изменено: Honey - 21 июн 2017 08:56:57
 
А Вы вдумайтесь в ошибку. В Google-переводчик закиньте. Тогда видно будет, что у Вас проблема в том, что нет диапазона "Книга" или "Об" или другого, чего Вы пишите в Range.
Так же надо помнить, что указание Range явного указания для него листа и книги подразумевает обращение к АКТИВНОЙ книге. А Вы её только что создали. Следовательно там НЕТ ИМЕНОВАННЫХ ДИАПАЗОНОВ, да и вообще данных.
Советую очень внимательно изучить: Как обратиться к диапазону из VBA
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Во вложении файл, в котором этот самый макрос (модуль)
Изменено: Honey - 21 июн 2017 09:06:17
 
The_Prist,
Об этом я читала... Видимо, действительно, я чего-то не понимаю((( У меня есть такие диапазоны. И я ведь указываю на имена диапазонов не в ново-созданной книге. Или как мне конкретней указать, чтобы диапазон брался конкретно с первоначальной книги для именования...?

Спасибо за ссылочку))
Изменено: Honey - 21 июн 2017 09:09:17
 
Цитата
Honey написал:
указываю на имена диапазонов не в ново-созданной книге
нет. Я же написал, что указание Range без явного указания листа и книги в Вашем случае указывает на активный лист. А т.к. Вы это делаете после создания новой книги - то активна именно она, а не что-то там где-то еще. Видимо, читали либо не все, либо не то, либо не так.
Код
New_Wb.SaveAs ThisWorksbook.Sheets("1 норм").Range("O6") & "\" & ThisWorksbook.Sheets("1 норм").Range("Книга") & ".xlsm", 52
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1 2 След.
Читают тему (гостей: 1)
Наверх