|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.03.2013, 10:21 | #1 |
Новичок
Джуниор
Регистрация: 21.03.2013
Сообщений: 3
|
Сбор информации из нескольких книг в одну
Добрый день!
В компании решили ввести отчетность деятельности отделов. Формирование отчета проходит ежемесячно по заранее набранной ворме в Excel 2010. Книга которая должна собирать из этих отчетов информацию находится в этой же папке. Задача следующая: макросом открыть все отчеты, которые лежат в этой же папке (количество отчетов может меняться). и последовательно перенести информацию в сводный отчет. Т.е. каждая новая таблица встаёт под только что вставленную. Форматы всех таблиц одинаковые.Начинаются все с ячейки A12. таблица на 7 столбцов. После того, как процедура вставки информации завершена, закрыть отчеты без сохранения. Остаться в сводном отчете. Как лошара я накидал вот такой макрос: Sub Загрузка_отчетов_отделов() Application.ScreenUpdating = False 'обновление экрана выключено, что бы не моргало 'очистка формы перед копированием Windows("ОТЧЕТ УК ТАВРОС.xlsm").Activate ActiveSheet.Range("a12", ActiveSheet.Range("h12").End(xlDown )).Delete 'открываем отчеты отделов Workbooks.Open Filename:="Отчет Бухгалтерии.xlsx" Workbooks.Open Filename:="Отчет Кадров.xlsx" Workbooks.Open Filename:="Отчет Казначейства.xlsx" Workbooks.Open Filename:="Отчет Строителей.xlsx" Workbooks.Open Filename:="Отчет Экономистов.xlsx" Workbooks.Open Filename:="Отчет Юристов.xlsx" 'из отчета Бухгалтерии вносим информацию Windows("Отчет Бухгалтерии.xlsx").Activate On Error Resume Next ActiveSheet.ShowAllData 'LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 'Range("A12:H21").Select ActiveSheet.Range("a12", ActiveSheet.Range("h12").End(xlDown )).Select 'выбираем заполненный диапазон Selection.Copy Windows("ОТЧЕТ УК ТАВРОС.xlsm").Activate ActiveSheet.ShowAllData Range("A12").Select ActiveSheet.Paste 'из отчета Кадров вносим информацию Windows("Отчет Кадров.xlsx").Activate ActiveSheet.ShowAllData 'LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 'Range("A12:H21").Select ActiveSheet.Range("a12", ActiveSheet.Range("h12").End(xlDown )).Select 'выбираем заполненный диапазон Selection.Copy Windows("ОТЧЕТ УК ТАВРОС.xlsm").Activate 'Range("A72").Select ActiveSheet.Range("a12").End(xlDown ).Offset(1, 0).Select 'выбираем последнюю пустую ячейку ActiveSheet.Paste 'из отчета Казначейства вносим информацию Windows("Отчет Казначейства.xlsx").Activate ActiveSheet.ShowAllData 'Range("A12:H21").Select ActiveSheet.Range("a12", ActiveSheet.Range("h12").End(xlDown )).Select 'выбираем заполненный диапазон Selection.Copy Windows("ОТЧЕТ УК ТАВРОС.xlsm").Activate 'Range("A32").Select ActiveSheet.Range("a12").End(xlDown ).Offset(1, 0).Select 'выбираем последнюю пустую ячейку ActiveSheet.Paste 'из отчета Строителей вносим информацию Windows("Отчет Строителей.xlsx").Activate ActiveSheet.ShowAllData 'Range("A12:H21").Select ActiveSheet.Range("a12", ActiveSheet.Range("h12").End(xlDown )).Select 'выбираем заполненный диапазон Selection.Copy Windows("ОТЧЕТ УК ТАВРОС.xlsm").Activate 'Range("A42").Select ActiveSheet.Range("a12").End(xlDown ).Offset(1, 0).Select 'выбираем последнюю пустую ячейку ActiveSheet.Paste 'из отчета Экономистов вносим информацию Windows("Отчет Экономистов.xlsx").Activate ActiveSheet.ShowAllData 'Range("A12:H21").Select ActiveSheet.Range("a12", ActiveSheet.Range("h12").End(xlDown )).Select 'выбираем заполненный диапазон Selection.Copy Windows("ОТЧЕТ УК ТАВРОС.xlsm").Activate 'Range("A52").Select ActiveSheet.Range("a12").End(xlDown ).Offset(1, 0).Select 'выбираем последнюю пустую ячейку ActiveSheet.Paste 'из отчета Юристов вносим информацию Windows("Отчет Юристов.xlsx").Activate ActiveSheet.ShowAllData 'Range("A12:H21").Select ActiveSheet.Range("a12", ActiveSheet.Range("h12").End(xlDown )).Select 'выбираем заполненный диапазон Selection.Copy Windows("ОТЧЕТ УК ТАВРОС.xlsm").Activate 'Range("A62").Select ActiveSheet.Range("a12").End(xlDown ).Offset(1, 0).Select 'выбираем последнюю пустую ячейку ActiveSheet.Paste 'закрытие отчетов отделов Windows("Отчет Юристов.xlsx").Activate ActiveWindow.Close Windows("Отчет Экономистов.xlsx").Activate ActiveWindow.Close Windows("Отчет Строителей.xlsx").Activate ActiveWindow.Close Windows("Отчет Казначейства.xlsx").Activate ActiveWindow.Close Windows("Отчет Кадров.xlsx").Activate ActiveWindow.Close Windows("Отчет Бухгалтерии.xlsx").Activate ActiveWindow.Close Application.ScreenUpdating = True 'обновление экрана включено End Sub Понимаю, что тут можно обойтись циклом. Но с этим я не знаком + ко всему не знаю как сделать что бы открывались все фаилы в текущей папке учитывая, что имена и количество всегда может быть разное. |
21.03.2013, 10:23 | #2 |
Новичок
Джуниор
Регистрация: 21.03.2013
Сообщений: 3
|
Помогите пожалуйста....
|
21.03.2013, 10:41 | #3 |
Участник клуба
Регистрация: 12.08.2010
Сообщений: 1,077
|
конечно сложно советовать, не видя примера таблицы
sub form00() s1="c:\rab\" s2=dir(s1 & "*.xlsx" do while len(s2)>0 '''формирование рабочих строк 1-7 кол '''в колонке 8 --имя книги s2=dir loop end sub а далее обычная сводная на эту рабочую книгу
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание |
21.03.2013, 10:52 | #4 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Есть готовое решение для сбора данных из файлов:
http://excelvba.ru/code/CombineFiles (там есть прикреплённый файл со всем необходимым кодом) |
21.03.2013, 10:57 | #5 | |
Новичок
Джуниор
Регистрация: 21.03.2013
Сообщений: 3
|
Цитата:
Надеюсь чайник разберется )))) |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
сбор данных из нескольких книг Excel в одну! | hna79 | Microsoft Office Excel | 2 | 28.10.2012 14:30 |
сбор данных с разных книг в одну | Ledy1987 | Microsoft Office Excel | 26 | 20.04.2011 21:33 |
Сбор даных с разных книг в одну | Pao | Microsoft Office Excel | 28 | 12.07.2010 07:27 |
Сбор данных с множества книг в одну по шаблонам | Adeletto | Microsoft Office Excel | 3 | 11.06.2010 17:07 |
Сбор данных из разных книг | 804040 | Microsoft Office Excel | 2 | 19.04.2010 15:33 |