Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/копировать 2 листа из книги в книгу. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » копировать 2 листа из книги в книгу. (Макросы/Sub)
копировать 2 листа из книги в книгу.
koyaanisqatsi Дата: Среда, 21.01.2015, 22:33 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте.

Есть книга эксель 2010 с защищенными ячейками и общим доступом. Надо из этой книги копировать данные двух листов в другую книгу.
У первой книги меняются имена. Вторая книга может называться статично. (PrimerForVBAIn куда копировать)
В первой книге задал пароль"1" для большей схожести.

PS: Кстати надо копировать в файл который будет лежать всегда в одном и том же месте. В идеале что бы он еще и открывался этим макросом.
К сообщению приложен файл: PrimerForVBA.xlsx (51.0 Kb) · PrimerForVBAIn.xlsx (33.0 Kb)


Сообщение отредактировал koyaanisqatsi - Среда, 21.01.2015, 22:52
 
Ответить
СообщениеЗдравствуйте.

Есть книга эксель 2010 с защищенными ячейками и общим доступом. Надо из этой книги копировать данные двух листов в другую книгу.
У первой книги меняются имена. Вторая книга может называться статично. (PrimerForVBAIn куда копировать)
В первой книге задал пароль"1" для большей схожести.

PS: Кстати надо копировать в файл который будет лежать всегда в одном и том же месте. В идеале что бы он еще и открывался этим макросом.

Автор - koyaanisqatsi
Дата добавления - 21.01.2015 в 22:33
Hugo Дата: Среда, 21.01.2015, 22:38 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
Не понимаю - зачем копировать? Сохраните файл целиком под другим именем, или сделайте копию файла, и всё.
Ну или объясните задачу.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеНе понимаю - зачем копировать? Сохраните файл целиком под другим именем, или сделайте копию файла, и всё.
Ну или объясните задачу.

Автор - Hugo
Дата добавления - 21.01.2015 в 22:38
koyaanisqatsi Дата: Среда, 21.01.2015, 22:41 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
Hugo, Сейчас есть один файл на 6.6 Mb в оперативке он примерно 100 метров, работа ведется по удаленному доступу. И файл могут открывать несколько юзеров. Сейчас все в одном файле. и расчеты и входящие заявки и этикетки. Хочу отпилить часть с этикетками. Для этого надо передать 2-3 листа в файлик где будут хранится этикетки.
Вообще Андрей уже давно мне вангавал переход на вариант с базой данных, но у меня не хватит мозгов на данном этапе это сделать.
А я уже уперся в обхем файла. Пытался внедрить в него еще деление между двумя складами файл вырос до 11 Mb в оперативе примерно 150Mb попытался открыть три раза файл сервер начал зависать. Приходится придумывать обходные маневры.

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


Сообщение отредактировал koyaanisqatsi - Среда, 21.01.2015, 22:52
 
Ответить
СообщениеHugo, Сейчас есть один файл на 6.6 Mb в оперативке он примерно 100 метров, работа ведется по удаленному доступу. И файл могут открывать несколько юзеров. Сейчас все в одном файле. и расчеты и входящие заявки и этикетки. Хочу отпилить часть с этикетками. Для этого надо передать 2-3 листа в файлик где будут хранится этикетки.
Вообще Андрей уже давно мне вангавал переход на вариант с базой данных, но у меня не хватит мозгов на данном этапе это сделать.
А я уже уперся в обхем файла. Пытался внедрить в него еще деление между двумя складами файл вырос до 11 Mb в оперативе примерно 150Mb попытался открыть три раза файл сервер начал зависать. Приходится придумывать обходные маневры.

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

Автор - koyaanisqatsi
Дата добавления - 21.01.2015 в 22:41
Hugo Дата: Среда, 21.01.2015, 23:47 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
Можно открыть этого монстра и скопировать часть листов в новый файл, его сохранить под любым именем, или просто поработать и затем убить. Можно скопировать в уже существующий - но что делать с такими же листами, если они там уже есть?
Ну и в любом случае этого монстра придётся открыть - т.е.100 метров оперативки потратить придётся.

Хотя может если использовать getobject - то поменьше...
Например так (подставьте свой путь):
[vba]
Код
Sub tt()
      With GetObject("c:\Downloads\PrimerForVBA.xlsx")
          .Sheets(Array("заявки", "рейсы")).Copy
          .Close 0
      End With
End Sub
[/vba]


excel@nxt.ru
webmoney: E265281470651 Z422237915069


Сообщение отредактировал Hugo - Четверг, 22.01.2015, 00:43
 
Ответить
СообщениеМожно открыть этого монстра и скопировать часть листов в новый файл, его сохранить под любым именем, или просто поработать и затем убить. Можно скопировать в уже существующий - но что делать с такими же листами, если они там уже есть?
Ну и в любом случае этого монстра придётся открыть - т.е.100 метров оперативки потратить придётся.

Хотя может если использовать getobject - то поменьше...
Например так (подставьте свой путь):
[vba]
Код
Sub tt()
      With GetObject("c:\Downloads\PrimerForVBA.xlsx")
          .Sheets(Array("заявки", "рейсы")).Copy
          .Close 0
      End With
End Sub
[/vba]

Автор - Hugo
Дата добавления - 21.01.2015 в 23:47
RAN Дата: Четверг, 22.01.2015, 00:12 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Фиттнес для общего доступа

[vba]
Код
Sub SaveAsShared() 'разрешить общий доступ
     Application.DisplayAlerts = False
     With ActiveWorkbook
         .SaveAs Filename:=.FullName, AccessMode:=xlShared
     End With
     Application.DisplayAlerts = True
End Sub

Sub RestoreAsNotShared() 'убрать общий доступ
     Application.DisplayAlerts = False
     With ActiveWorkbook
         If .MultiUserEditing Then .ExclusiveAccess
     End With
     Application.DisplayAlerts = True
End Sub

Sub ClearJournal() ' очистить журнал
     Application.DisplayAlerts = False
     With ActiveWorkbook
         If .MultiUserEditing Then .ExclusiveAccess
         .SaveAs Filename:=.FullName
         .SaveAs Filename:=.FullName, AccessMode:=xlShared
     End With
     Application.DisplayAlerts = True
End Sub
[/vba]
К сообщению приложен файл: 7140588.jpg (35.3 Kb)


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеФиттнес для общего доступа

[vba]
Код
Sub SaveAsShared() 'разрешить общий доступ
     Application.DisplayAlerts = False
     With ActiveWorkbook
         .SaveAs Filename:=.FullName, AccessMode:=xlShared
     End With
     Application.DisplayAlerts = True
End Sub

Sub RestoreAsNotShared() 'убрать общий доступ
     Application.DisplayAlerts = False
     With ActiveWorkbook
         If .MultiUserEditing Then .ExclusiveAccess
     End With
     Application.DisplayAlerts = True
End Sub

Sub ClearJournal() ' очистить журнал
     Application.DisplayAlerts = False
     With ActiveWorkbook
         If .MultiUserEditing Then .ExclusiveAccess
         .SaveAs Filename:=.FullName
         .SaveAs Filename:=.FullName, AccessMode:=xlShared
     End With
     Application.DisplayAlerts = True
End Sub
[/vba]

Автор - RAN
Дата добавления - 22.01.2015 в 00:12
koyaanisqatsi Дата: Четверг, 22.01.2015, 07:29 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
Hugo, С первым файлом идет постоянная работа а файл 2 в который я захочу перенести этикетки будет открыватся в случае необходимости когда уже вся основная работа завершена. Так что проблем нет с открытием первого файла, он и так почти всегда открыт. более того на моем компе даже три таких может быть открыто.
А по поводу вопроса "но что делать с такими же листами". Просто если в обоих листах общий доступ то создать новый лист нельзя. Прийдется копировать в уже существующий. Поэтому я создал лист с таким же именем. Более того во втором файле будет много формул которые ссылаются на эти листы. Если не будет таких листов формулы испортятся. Почему-то эксель не умет сохранять формулы на несуществующие листы. (
Я конечно извиняюсь, но вы не очень внимательно прочитали что я написал " With GetObject("c:\Downloads\PrimerForVBA.xlsx")" это работать не будет. Так как первый файл всегда называется по разному. У второго файла можно задать статическое имя. Поэтому я и хочу не забрать данные а отдать.

RAN, А зачем мне убирать и разрешать общий доступ ? Я же не хотел проводить действия с первым файлом. Хотел только из него выгрузить данные двух или трех страниц. В файл который будет всегда называться одинаково и лежать в одном и том же месте. Если убрать общий доступ у файла который открыт на нескольких компьютерахх а потом разрешить то на тех компьютерах возникнет проблема с сохранением файла. И им выдаст ошибку о разрыве связи файлом.


Сообщение отредактировал koyaanisqatsi - Четверг, 22.01.2015, 07:32
 
Ответить
СообщениеHugo, С первым файлом идет постоянная работа а файл 2 в который я захочу перенести этикетки будет открыватся в случае необходимости когда уже вся основная работа завершена. Так что проблем нет с открытием первого файла, он и так почти всегда открыт. более того на моем компе даже три таких может быть открыто.
А по поводу вопроса "но что делать с такими же листами". Просто если в обоих листах общий доступ то создать новый лист нельзя. Прийдется копировать в уже существующий. Поэтому я создал лист с таким же именем. Более того во втором файле будет много формул которые ссылаются на эти листы. Если не будет таких листов формулы испортятся. Почему-то эксель не умет сохранять формулы на несуществующие листы. (
Я конечно извиняюсь, но вы не очень внимательно прочитали что я написал " With GetObject("c:\Downloads\PrimerForVBA.xlsx")" это работать не будет. Так как первый файл всегда называется по разному. У второго файла можно задать статическое имя. Поэтому я и хочу не забрать данные а отдать.

RAN, А зачем мне убирать и разрешать общий доступ ? Я же не хотел проводить действия с первым файлом. Хотел только из него выгрузить данные двух или трех страниц. В файл который будет всегда называться одинаково и лежать в одном и том же месте. Если убрать общий доступ у файла который открыт на нескольких компьютерахх а потом разрешить то на тех компьютерах возникнет проблема с сохранением файла. И им выдаст ошибку о разрыве связи файлом.

Автор - koyaanisqatsi
Дата добавления - 22.01.2015 в 07:29
JayBhagavan Дата: Четверг, 22.01.2015, 12:10 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 188
Репутация: 27 ±
Замечаний: 0% ±

Excel 2010
Почему-то эксель не умет сохранять формулы на несуществующие листы
Может, если использовать ДВССЫЛ(). Например, ДВССЫЛ("'Несуществующий лист'!A1"). Только ДВССЫЛ() не умеет работать с закрытыми книгами, емнип.


Языком ты или построишь жизнь,или разрушишь ее до основания.Думайте что говорите.(с)А.Хакимов
 
Ответить
Сообщение
Почему-то эксель не умет сохранять формулы на несуществующие листы
Может, если использовать ДВССЫЛ(). Например, ДВССЫЛ("'Несуществующий лист'!A1"). Только ДВССЫЛ() не умеет работать с закрытыми книгами, емнип.

Автор - JayBhagavan
Дата добавления - 22.01.2015 в 12:10
RAN Дата: Четверг, 22.01.2015, 12:48 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
После фитнеса файлик запросто может похудеть до 1Mb. Но не настаиваю. :D


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеПосле фитнеса файлик запросто может похудеть до 1Mb. Но не настаиваю. :D

Автор - RAN
Дата добавления - 22.01.2015 в 12:48
koyaanisqatsi Дата: Четверг, 22.01.2015, 13:24 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
RAN, не очень понял шутки ? Есть какая-то метода рабочая по уменьшению объема эксель файлов ?
Если вы о том что история хранящаяся внутри файла обнуляется после того как дать и снять общий доступ. То это действие и так происходит каждый раз при копировании этого файла на новую дату. худеет файл но не значительно. Там естественно большой объем формул а не данных. Все данные с которыми надо работать впринципе уже приведены в тестовом примере тут. И как можно заметить их весьма не много. А вот формул которые выдают тот или иной результат просто тьма. Вот пытаюсь немного разобраться/оптимизировать.

А что насчет копирования листов? все же тема была создана именно для этого. Буду тогда стараться искать уже готовые решения в интеренет. Единственно когда я в прошлый раз пытался использовать уже готовый чей-то макрос получилось что возникали ошибки(


Сообщение отредактировал koyaanisqatsi - Четверг, 22.01.2015, 13:25
 
Ответить
СообщениеRAN, не очень понял шутки ? Есть какая-то метода рабочая по уменьшению объема эксель файлов ?
Если вы о том что история хранящаяся внутри файла обнуляется после того как дать и снять общий доступ. То это действие и так происходит каждый раз при копировании этого файла на новую дату. худеет файл но не значительно. Там естественно большой объем формул а не данных. Все данные с которыми надо работать впринципе уже приведены в тестовом примере тут. И как можно заметить их весьма не много. А вот формул которые выдают тот или иной результат просто тьма. Вот пытаюсь немного разобраться/оптимизировать.

А что насчет копирования листов? все же тема была создана именно для этого. Буду тогда стараться искать уже готовые решения в интеренет. Единственно когда я в прошлый раз пытался использовать уже готовый чей-то макрос получилось что возникали ошибки(

Автор - koyaanisqatsi
Дата добавления - 22.01.2015 в 13:24
Wasilich Дата: Четверг, 22.01.2015, 19:15 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
А что насчет копирования листов? все же тема была создана именно для этого. Буду тогда стараться искать уже готовые решения
Так, они же тут. http://www.excelworld.ru/forum/3-6954-1
 
Ответить
Сообщение
А что насчет копирования листов? все же тема была создана именно для этого. Буду тогда стараться искать уже готовые решения
Так, они же тут. http://www.excelworld.ru/forum/3-6954-1

Автор - Wasilich
Дата добавления - 22.01.2015 в 19:15
koyaanisqatsi Дата: Пятница, 23.01.2015, 18:40 | Сообщение № 11
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
Hugo, переделал ваше предложение под свой вариант получился такой код
[vba]
Код
Sub tt()
     With GetObject("d:\ЭтикеткиРазвесы.xlsm")
         .Sheets(Array("заявки", "рейсы вторник")).Copy
         .Close 0
     End With
End Sub
[/vba]

что делает этот макрос ? он открывает файл под именем ЭтикеткиРазвесы.xlsm и копирует от туда два листа в новую книгу. А мне надо чтобы из текущей книги попадали два листа в закрытую. Чтобы я мог из открытого файла нажать кнопочку которая автоматом откроет файл этикеток и загрузит туда данные из текущего файла.
 
Ответить
СообщениеHugo, переделал ваше предложение под свой вариант получился такой код
[vba]
Код
Sub tt()
     With GetObject("d:\ЭтикеткиРазвесы.xlsm")
         .Sheets(Array("заявки", "рейсы вторник")).Copy
         .Close 0
     End With
End Sub
[/vba]

что делает этот макрос ? он открывает файл под именем ЭтикеткиРазвесы.xlsm и копирует от туда два листа в новую книгу. А мне надо чтобы из текущей книги попадали два листа в закрытую. Чтобы я мог из открытого файла нажать кнопочку которая автоматом откроет файл этикеток и загрузит туда данные из текущего файла.

Автор - koyaanisqatsi
Дата добавления - 23.01.2015 в 18:40
RAN Дата: Пятница, 23.01.2015, 21:58 | Сообщение № 12
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
...


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Пятница, 23.01.2015, 22:46
 
Ответить
Сообщение...

Автор - RAN
Дата добавления - 23.01.2015 в 21:58
koyaanisqatsi Дата: Понедельник, 26.01.2015, 20:42 | Сообщение № 13
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
Всем спасибо кто хотел помочь. Александр Субботин Написал такой макрос. Работает.
Третий вариант под мои условия. В принципе там все с комментариями в познавательных целях для новичков весьма полезно может быть.
Макрос для копирования листов из книги в книгу.
Думаю тема закрыта.
 
Ответить
СообщениеВсем спасибо кто хотел помочь. Александр Субботин Написал такой макрос. Работает.
Третий вариант под мои условия. В принципе там все с комментариями в познавательных целях для новичков весьма полезно может быть.
Макрос для копирования листов из книги в книгу.
Думаю тема закрыта.

Автор - koyaanisqatsi
Дата добавления - 26.01.2015 в 20:42
RAN Дата: Понедельник, 26.01.2015, 22:08 | Сообщение № 14
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Вертаю. <_<
[vba]
Код
Sub tt()
     With GetObject("C:\Книга2.xlsx")
         Windows(.Name).Visible = True
         ThisWorkbook.Sheets(Array("заявки", "рейсы вторник")).Copy Before:=.Sheets(1)
         .Save
         .Close 0
     End With
End Sub
[/vba]
На этих листах не должно быть умных таблиц.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеВертаю. <_<
[vba]
Код
Sub tt()
     With GetObject("C:\Книга2.xlsx")
         Windows(.Name).Visible = True
         ThisWorkbook.Sheets(Array("заявки", "рейсы вторник")).Copy Before:=.Sheets(1)
         .Save
         .Close 0
     End With
End Sub
[/vba]
На этих листах не должно быть умных таблиц.

Автор - RAN
Дата добавления - 26.01.2015 в 22:08
Мир MS Excel » Вопросы и решения » Вопросы по VBA » копировать 2 листа из книги в книгу. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!