Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2012, 15:27   #1
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию Сбор только новых из разных папок

Добрый день, уважаемые форумчане!
Прежде все файлы сваливались в одну папку и данные из них сводились в один файл вот таким кодом:
Код:
Sub ЗаполнениеСводного()
    Application.ScreenUpdating = False: Application.DisplayAlerts = False
    
    Dim coll As New Collection, wb As Workbook, sh As Worksheet, sh1 As Worksheet
    Mask = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "*.xlsx")
    Set sh1 = Worksheets("лист 1")
    iLastRow = sh1.Cells(Rows.Count, 1).End(xlUp).Row
    Filename = Dir(Mask)
    While Filename <> ""    ' перебираем все файлы в текущей папке
        If Not Filename Like ThisWorkbook.Name & "*" Then coll.Add Filename
        Filename = Dir
    Wend

    On Error Resume Next
    For Each Item In coll
        Set wb = Workbooks.Open(Replace(ThisWorkbook.FullName, ThisWorkbook.Name, Item), , True)
        If Not wb Is Nothing Then
            Set sh = wb.Worksheets("не заполняется")
                        
                    sh.Range("A3").Copy sh1.Cells(iLastRow, 1)
                    sh.Range("B3:AS3").Copy sh1.Cells(iLastRow, 8)
                    iLastRow = iLastRow + 1
                   
            wb.Close False
        End If
    Next
    Application.DisplayAlerts = True
End Sub
Файлы все одинаковые, данные импортируются из листа в одинаковым именем и в определенном порядке, что видно из кода.
Сейчас возникла необходимости разнести файлы по подпапкам. То есть каждый файл в отдельную подпапку с именем, соответствующим имени файла. Например, файл primer.xlsx, а подпапка для него primer.ru. Помогите адаптировать под такую задачу код, чтобы он просматривал все подпапки и импортировал данные из тех файлов, которые там лежат. НО, можно ли сделать так, чтобы он импортировал данные только из новых файлов, то есть тех, которых еще нет в сводном файле. Вот эта строка кода:
Код:
sh.Range("A3").Copy sh1.Cells(iLastRow, 1)
импортирует в ячейку А3 сводного файла как раз название папки primer.ru, где лежит файл. Может организовать проверку имени проверяемой папки с содержимым столбца А начиная со строки 3 и, в случае совпадения, не импортировать данные из файла, который там лежит?
Заранее спасибо!
strannick вне форума Ответить с цитированием
Старый 20.12.2012, 21:11   #2
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Умом понял. Надо перебрать все подпапки в папке, имена подпапок загнать в коллекцию, сравнить с именами, уже имеющимися именами в столбце А сводного файла, при совпадении пропускаем, в противном случае копируем данные. Так?
Подскажите как собрать в коллекцию имена всех вложенных папок?
strannick вне форума Ответить с цитированием
Старый 20.12.2012, 22:50   #3
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Зачем подпапки?
У Educated Fool на сайте есть код filenamescollection: http://excelvba.ru/code/FilenamesCollection
Функция VBA для получения списка файлов из папки,
с учётом выбранной глубины поиска в подпапках
У каждого файла ведь уникальное полное имя, не перепутаете.

Уже имеющиеся загоняете в словарь, затем оперативно проверяете все файлы по этому словарю - если ещё нет, значит надо брать
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сбор данных только первых листов разных книг Dilmira Microsoft Office Excel 6 25.04.2011 17:50
Сбор даных с разных книг в одну Pao Microsoft Office Excel 28 12.07.2010 07:27
Сбор данных из разных книг 804040 Microsoft Office Excel 2 19.04.2010 15:33
Сбор данных с разных файлов Fess111 Microsoft Office Excel 2 09.03.2010 10:13
Создание новых папок как в Windows=) Drakulov Общие вопросы Delphi 4 17.02.2010 21:35