Макрос извлекающий данные из нескольких файлов

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
PC
Сообщения: 29
Зарегистрирован: 04 май 2005, 10:32
Откуда: Moscow

Всем добрый день!

Мне необходим макрос, который будет извлекать данные из нескольких файлов. Есть одна папка в которую складываются файлы отчетов от разных регионов. Файлы содержат в названии R01, R02 и тд. В этой же папке лежит файл "Total", который собирает информацию из региональных файлов.
В идеале (так как отчеты бывают разными), хотелось бы чтобы макрос полностью копировал страницу из файла R01 и вставлял ее в файл "Total" на лист R01 и так далее по всем файлам.

Если кто-то сможет помочь, буду очень признателен :-)
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

Если файлы R01, R02 и т.д. cодержат всего один лист, то можно попробовать использовать этот макрос :

Код: Выделить всё

iPath = ThisWorkbook.Path & "\"
iFileName = Dir(iPath & "*.xls")

Application.ScreenUpdating = False

Do While iFileName <> ""
   If iFileName Like "R0*" Then
      ThisWorkbook.Sheets.Add _
      (Type:=iPath & "\" & iFileName).Name = iFileName
   End If
   iFileName = Dir
Loop

Application.ScreenUpdating = True
P.S. Желательно расположить этот код в файле Total
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

PC, попробуйте сначала обойтись без макросов.
Часто это оказывается гораздо более быстро и эффективно.

например:

='C:\Documents and Settings\User1\My Documents\[Book2.xls]Sheet1'!$A$1
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

PC, Обратите внимание на то, что ссылки возвращают только значения ячеек, т.е. "теряются" все параметры форматирования, а в профессиональных отчётах это немаловажная часть … а уж если в исходных рабочих книгах наличествуют формулы, которые необходимо оставить или диаграммы, то обычные ссылки Вам ничем не помогут, хотя использование ссылок - это действительно очень быстро и эффективно.
PC
Сообщения: 29
Зарегистрирован: 04 май 2005, 10:32
Откуда: Moscow

Супер! Павел, спасибо огромное!!!

PS Только по какой-то причине происходит двойное копирование листов. Первый лист называется "R02_отчет.xls" второй просто "R02". При этом листа "R01" нет вообще, есть только "R01_отчет.xls".
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

Если файлы R01, R02 и т.д. cодержат всего один лист, то наличие листа с именем R02 означает, что он изначально находился в рабочей книге "Total.xls" … возможно, что файлы R01, R02 всё-таки содержат несколько листов, поэтому предлагаю написать мне напрямую, дабы решить этот вопрос с учётом всех нюансов.
Ответить