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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2013, 14:45   #1
hamlook
Пользователь
 
Регистрация: 22.05.2009
Сообщений: 85
По умолчанию Сбор данных с нескольких файлов

Доброго вам времени.
Мне необходимо постоянно копировать одни и те же данные с многих файлов в одну таблицу. На вашем форуме нашел нужный макрос и подкорректировал под свои нужды.
В принципе все работает как мне надо, но немного не хватает.
Подскажите пожалуйста как сделать макрос, чтобы данные, которые уже есть в общей таблице, по новой не копировались? Ориентир - по номеру акта (ячейка В4). То есть если данные с акта №44 уже внесены в общую таблицу, то повторно они попасть туда не должны, даже если данный акт находится в папке.
Вложения
Тип файла: rar акты.rar (23.5 Кб, 30 просмотров)
hamlook вне форума Ответить с цитированием
Старый 02.05.2013, 17:26   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

С минимальным изменением кода:
Код:
Sub Main()
    Dim path As String, file As String, arg As String, i As Long, x
    Application.ScreenUpdating = False
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Укажите рабочую папку": .Show
        If .SelectedItems.Count = 0 Then Exit Sub Else path = .SelectedItems(1) & "\"
    End With
    file = Dir(path & "*.xls"): i = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Do While file <> ""
        x = ExecuteExcel4Macro("'" & path & "[" & file & "]" & "Лист1'!" & Range("B4").Range("A1").Address(, , xlR1C1))
        If IsError(Application.Match(x, Columns("B"), 0)) Then
            Cells(i, 1) = Cells(i - 1, 1) + 1
            Cells(i, 2) = x
            Cells(i, 3) = ExecuteExcel4Macro("'" & path & "[" & file & "]" & "Лист1'!" & Range("A10").Range("A1").Address(, , xlR1C1))
            Cells(i, 4) = ExecuteExcel4Macro("'" & path & "[" & file & "]" & "Лист1'!" & Range("B10").Range("A1").Address(, , xlR1C1))
            Cells(i, 5) = ExecuteExcel4Macro("'" & path & "[" & file & "]" & "Лист1'!" & Range("C10").Range("A1").Address(, , xlR1C1))
            i = i + 1
        End If
        file = Dir
    Loop
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 02.05.2013, 19:22   #3
hamlook
Пользователь
 
Регистрация: 22.05.2009
Сообщений: 85
По умолчанию

Спасибо большое! Великолепно работает!!!
hamlook вне форума Ответить с цитированием
Старый 07.05.2013, 12:36   #4
hamlook
Пользователь
 
Регистрация: 22.05.2009
Сообщений: 85
По умолчанию

Не учел один момент.
В актах не всегда одна строка данных.., то есть всегда разное количество строк. А иногда еще и с разрывами на два листа. Возможно такое реализовать?
Вложения
Тип файла: rar акты2.rar (38.1 Кб, 9 просмотров)
hamlook вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сбор данных из нескольких книг Excel в одну! hna79 Microsoft Office Excel 2 28.10.2012 14:30
Импорт данных из нескольких Excel файлов в Word DJTreeno Microsoft Office Word 5 19.06.2012 16:07
Сбор данных из нескольких листов на один с удалением дубликатов, но суммированием значений strannick Microsoft Office Excel 4 10.04.2012 19:18
Ежедневный сбор данных из общедоступных файлов Lel!k Microsoft Office Excel 5 31.05.2011 02:03
Сбор данных с разных файлов Fess111 Microsoft Office Excel 2 09.03.2010 10:13