Сбор данных из открытых книг Excel с помощью кода VBA, при условии, что данные находятся на листах с одним именем и в одноименных ячейках.
Сбор данных из одной ячейки
Условие
В ячейках «A1» на листах «Лист1» открытых книг Excel содержатся числа, которые необходимо сложить и записать в ячейку «E3» на листе «Лист9» книги с кодом VBA («ЭтаКнига»).
Решение
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub Primer1() Dim myWB As Workbook 'Очищаем ячейку "E3" этой книги с кодом от предыдущего значения ThisWorkbook.Sheets("Лист9").Range("E3").ClearContents 'Обходим циклом все открытые книги For Each myWB In Workbooks 'Проверяем, не является ли myWB книгой «ЭтаКнига» If Not myWB Is ThisWorkbook Then With ThisWorkbook.Sheets("Лист9") 'Проверяем, можно ли значение ячейки "A1" книги myWB считать числом If IsNumeric(myWB.Sheets("Лист1").Range("A1")) Then 'Прибавляем к значению ячейки "E3" этой книги значение ячейки "A1" книги myWB .Range("E3") = .Range("E3") + myWB.Sheets("Лист1").Range("A1") End If End With End If Next End Sub |
Сбор данных из диапазона
Условие
В ячейках диапазона «A1:B3» на листах «Лист1» открытых книг Excel содержатся числа, которые необходимо сложить (в одноименных ячейках) и записать в соответствующие ячейки диапазона «E3:F5» на листе «Лист9» книги с кодом VBA («ЭтаКнига»).
Решение
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Sub Primer2() Dim myWB As Workbook 'Очищаем диапазон "E3:F5" книги с кодом от предыдущих значений ThisWorkbook.Sheets("Лист9").Range("E3:F5").ClearContents For Each myWB In Workbooks 'Проверяем, не является ли myWB книгой «ЭтаКнига» If Not myWB Is ThisWorkbook Then 'Копируем диапазон "A1:B3" книги myWB myWB.Sheets("Лист1").Range("A1:B3").Copy 'Специальная вставка значений скопированного диапазона со сложением в эту книгу ThisWorkbook.Sheets("Лист9").Range("E3:F5").PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd End If Next End Sub |
Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.