|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.01.2013, 17:32 | #1 |
Регистрация: 10.11.2012
Сообщений: 6
|
Создание макроса для копирования с закрытой книги
Вобщем есть "книга1.xlsx" и "книга2.xlsx" . В каждой книге есть лист с названием "Лист1". Нужно скопировать данные с "книга1.xlsx" с листа "Лист1" в книгу "книга2.xlsx" на такой же лист "Лист1".
При этом книга с которой нужно копировать закрытая. В процесе копирования вторую книгу с которой нужно скопировать открывать не нужно (Или же этот процес скрыть). Данные которые нужно скопировать находятся в диапазоне А1:MH800 . При этом нужно чтоб скопировались все формулы, цвета ячеек, рамки и так далее. Тоисть нужно сделать полную копию этих ячеек. Буду очень благодарен помощи! |
20.01.2013, 17:36 | #2 |
Участник клуба
Регистрация: 17.07.2009
Сообщений: 1,088
|
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru |
20.01.2013, 17:49 | #3 | |
Регистрация: 10.11.2012
Сообщений: 6
|
Цитата:
|
|
20.01.2013, 17:57 | #4 |
Регистрация: 10.11.2012
Сообщений: 6
|
Вот этот код впринципе подошел бы если бы происходило полное копирование.
Sub Get_Value_From_Close_Book() Dim sShName As String, sAddress As String, vData 'Отключаем обновление экрана Application.ScreenUpdating = False Workbooks.Open "C:\Documents and Settings\Книга1.xls" sAddress = "A1:C100" 'или одна ячейка - "A1" 'получаем значение vData = Sheets("Лист1").Range(sAddress).Val ue ActiveWorkbook.Close False 'Записываем данные на активный лист книги, 'с которой запустили макрос If IsArray(vData) Then [A1].Resize(UBound(vData, 1), UBound(vData, 2)).Value = vData Else [A1] = vData End If 'Включаем обновление экрана Application.ScreenUpdating = True End Sub Тоисть этот код не копирует Формулы в ячейках, цвета, рамки |
20.01.2013, 18:00 | #5 |
Участник клуба
Регистрация: 17.07.2009
Сообщений: 1,088
|
А по другой ссылке не судьба сходить?
Если отталкиваться от статьи про копирование из закрытой книги, то нужно эти строки: Код:
Код:
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru Последний раз редактировалось The_Prist; 20.01.2013 в 18:06. |
20.01.2013, 18:11 | #6 |
Регистрация: 10.11.2012
Сообщений: 6
|
Если бы я знал как обьединить эти два кода я бы вопрос здесь не задавал. Я только начинаю осваивать Excel, а тем более VBA. Несколько элементарных кодов научился писать и все, много что не понимаю как работает.
|
20.01.2013, 18:23 | #7 |
Участник клуба
Регистрация: 17.07.2009
Сообщений: 1,088
|
Чем последний ответ не устраивает? Мне кажется этого достаточно, чтобы понять принцип.
То, что Вы начинаете осваивать замечательно. Но по Вашему вопросу видно только то, что Вы хотите получить готовое решение, а не пытаетесь решить сами. Вы не выложили своих попыток объедининть два кода или хоть каких-то попыток решить свою проблему. Только вопрос и все.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru |
20.01.2013, 19:22 | #8 |
Регистрация: 10.11.2012
Сообщений: 6
|
Спасибо большое, теперь работает как и нужно.
Но все равно не до конца понимаю почему первый код не работал. Например этот код Dim sShName As String, sAddress As String, vData Не могу понять за что отвечает. Предполагаю что здесь перечисляются команды которые будут в дальнейшем применяться. Dim objCloseBook As Object не понимаю Application.ScreenUpdating = Fals Делает так чтоб экран не мерцал, тоисть чтоб не видно было как работает код. Set objCloseBook = GetObject("C:\Documents and Settings\Книга1.xls") Этот открывает документ скрыто. sAddress = "A1:K10" Здесь понятно. Указывается диапазон который нужно скопировать objCloseBook.Sheets("Лист").Range(s Address).Copy ThisWorkbook.Sheets(1).Range("A1") objCloseBook я так понял обращается к скрытому документу Sheets("Лист") этот соответственно к листу в этом документе Range(sAddress) это переход по указаному выше диапазону, насколько я понял Copy ThisWorkbook копирование этого диапазона ThisWorkbook.Sheets(1) переход в активную книгу .Range("A1") переход к ячейке. Вот только не понял где код который отвечает за вставку данных с буфер обмена Так то впринципе, вроде немножко понимаю код. Но составить самому или найти ошибку, это еще далеко для меня |
20.01.2013, 19:28 | #9 |
Регистрация: 10.11.2012
Сообщений: 6
|
На самом деле я весь день сидел над этим кодом. Ссылку которую Вы дали я тоже сегодня видел, но не хватило знаний ее переделать.
И вообще перед тем как задаю вопрос я всегда сам пол дня ищу ответ в интернете. Тогда, если не нашел ответа, намного интересней будет знать ответ. В даном случае не приводил своих примеров так как они настолько примитивно не правильно написаны что мне стыдно их даже выкладывать здесь, так как исправлять там нечего. Проще новый написать. Еще раз спасибо за помощь |
20.01.2013, 19:56 | #10 |
Участник клуба
Регистрация: 17.07.2009
Сообщений: 1,088
|
Почитайте первый раздел на этой странице: Что умеет Excel
Там есть ответ на некоторые вопросы. Строка, отвечающая за копирование-вставку: Код:
P.S. Советую срочно освоить кнопки тегов при создании сообщений. Читать листинги кодов без оформления не очень-то удобно.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание макроса в EXCEL для копирования | AKrupkin | Microsoft Office Excel | 10 | 17.09.2014 01:57 |
Создание выпадающего списка из другой закрытой книги | S_Brodsky | Microsoft Office Excel | 13 | 15.03.2012 20:49 |
Копирование листов из закрытой книги | rubius2008 | Microsoft Office Excel | 6 | 05.02.2011 22:44 |
СУММЕСЛИ из закрытой книги | Sha | Microsoft Office Excel | 1 | 16.12.2009 17:09 |
Копирование из закрытой книги | Maxx | Microsoft Office Excel | 11 | 11.08.2009 10:39 |