Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Быстрый макрос: суммировать ячейку в многих книгах


Автор: nikhardy 11.1.2012, 09:27
Дано: Много файлов стандартной формы (100 штук). Бюджеты по отдельно взятым объектам.
Требуется: Консолидировать эти бюджетики в один бюджет. То есть сложить все ячейки по всем книгам. Иначе говоря, должен на выходе быть файл: ИТОГО.xls, где А1 = Значение А1 в книге 1 + Значение А1 в книге 2 + Значение А1 в книге 3... 

Я написал код, он очевиден, но работает катастрофически медленно (по несколько минут на файл, где всего 2000 строк и 12 столбцов)

Код

   For j = 5 to 17
            For k = 12 To 450 step 1
                temp = Cells(k, j)
                temp = temp + ExecuteExcel4Macro("'" & path & "[" & file & "]" & listname & "'!" & Cells(k, j).Address(, , xlR1C1))
                Cells(k, j) = temp
            Next k
        Next j


Есть ли способ улучшить этот код?

P.S.
Сейчас код берёт значение ячейки из закрытой книги Excel. Я не против, если он будет её открывать.

Добавлено через 3 минуты и 12 секунд
Забыл сказать, что макрос перебирает файлы из директории, подставляя file и path автоматически.

Автор: Akina 11.1.2012, 10:05
Подключайтесь к каждой книге, используя ADO, одним запросом выгребайте данные и сливайте в массив. Полученный результат вываливайте на лист.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)