![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 03.06.2011
Сообщений: 9
|
![]()
Добрый день!
помогите решить задачу. Есть файл "паспорт.xls" c 26 листами: "n1", "n2", "n3", "n4",....."n18","n20"..."n28" и файл "Шаблон.xls" с листами "4" и "19" Нужен макрос, который копировал бы листы из шаблона в соответствующие места паспорта Попытались сами написать макрос, но он не копирует форматы и вставляет не туда куда надо. На самом деле таких файлов как "паспорт" 300 шт. все лежат в одной папке и во все надо скопировать эти несчастные 2 листа из шаблона. Помогите. Sub ВставитьЛистыИзШаблона() Dim book As Workbook Dim cbook As Workbook Dim nsheet As Worksheet Dim prevsheet As Worksheet Set cbook = ActiveWorkbook Set prevsheet = ActiveSheet iFullName = "C:\Паспорт\Шаблон.xls" Set book = Workbooks.Open(iFullName) Set nsheet = cbook.Sheets.Add(Type:=xlWorksheet) nsheet.Name = "n4" book.Sheets("4").Range("A1:M10000") .Copy Destination:=nsheet.Range("A1") book.Close False prevsheet.Activate End Sub |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
Так копируйте листы целиком. Не содержимое, а сами листы.
Вот записал, можно творчески использовать (макрос вроде грамотно написан, должны справиться): Код:
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 03.06.2011 в 14:04. |
![]() |
![]() |
![]() |
#3 |
Регистрация: 03.06.2011
Сообщений: 9
|
![]()
очень жаль, ничего не получается
Sub ВставитьЛистыИзШаблона() Dim book As Workbook Dim cbook As Workbook Dim nsheet As Worksheet Dim prevsheet As Worksheet Set cbook = ActiveWorkbook Set prevsheet = ActiveSheet iFullName = "C:\Паспорт\Шаблон.xls" Set book = Workbooks.Open(iFullName) 'не поняла, нужно добавлять в паспорт пустой лист или нет? 'и как его поставить на 4 место Set nsheet = cbook.Sheets.Add(Type:=xlWorksheet) nsheet.Name = "n4" 'book.Sheets("4").Range("A1:M10000" ).Copy Destination:=nsheet.Range("A1") 'book.Sheets("4").Range("A1:M10000" ).Copy Format:=nsheet.Range("A1") book.Sheets("4").Select book.Sheets("4").Copy Before:=Workbooks("C:\Паспорт\Паспо рт1.xls").Sheets(4) 'book.Close False prevsheet.Activate End Sub |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
Я думаю, ошибка тут - тут имя файла без пути нужно указывать:
Код:
Но этот файл уже должен быть открыт. Для открытия нужно цикл написать, например на Dir(). А лист добавлять не нужно, если Вы его целиком копируете. Да и book.Sheets("4").Select лишнее, это рекордерово ![]()
webmoney: E265281470651 Z422237915069 R418926282008
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 03.06.2011
Сообщений: 9
|
![]()
спасибо, кажется получилось
теперь попробую скопировать на все файлы |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
Мне без примера код писать не получится, поэтому прикину алгоритм макроса:
1.открыли файл "C:\Паспорт\Шаблон.xls", задали ссылки на два нужных листа. 2.в цикле открываем файл из нужной папки (папку прописать в коде или выбрать выше в диалоге) 3.копируем в этот файл два листа, файл сохраняем/закрываем, идём опять п.2, пока не закончатся файлы 4.закрываем "C:\Паспорт\Шаблон.xls" И "скопировать на все файлы" тут в общем нечего, пусть этим занимается код. Мне кажется, Вы что-то иначе собирались делать...
webmoney: E265281470651 Z422237915069 R418926282008
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Еще раз про lookup | HashDiler | БД в Delphi | 2 | 08.02.2011 21:00 |
Копирование листов из закрытой книги | rubius2008 | Microsoft Office Excel | 6 | 05.02.2011 22:44 |
И еще раз про libtorrent | hotcooler17 | C/C++ Сетевое программирование | 5 | 29.01.2011 21:52 |
копирование одного и того же набор ячеек со всеx существующиx листов на 1ый лист книги | skapitan | Microsoft Office Excel | 6 | 25.03.2010 20:40 |
Еще раз про адресацию | tae1980 | Microsoft Office Excel | 2 | 25.02.2009 07:56 |