Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/30: Рейтинг темы: голосов - 30, средняя оценка - 4.57
 Аватар для zver0555
5 / 5 / 0
Регистрация: 03.08.2010
Сообщений: 246

Сбор информации из разных книг Excel

21.05.2015, 18:40. Показов 6591. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно к примеру собрать информацию из множества книг Excel, а именно из всех ячеек A1, в другую книгу. То есть сумма всех ячеек A1 из множества книг в отдельную книгу. Второй вопрос в том, как сделать , чтоб при создании нового файла Excel, ячейки A1 так же учитывались в конечной книге. Названия книг соответствуют текущей дате и имеют порядковые номера в порядке возрастания. К примеру (21.05.2015(1(+1)))....
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.05.2015, 18:40
Ответы с готовыми решениями:

Сбор информации из разных книг Excel (не суммирования)
Нужно к примеру собрать информацию из множества книг Excel, а именно из всех ячеек М20, в другую книгу. То есть списки всех ячеек М20 из...

Сбор информации о максимумах с разных книг Excel
Здравствуйте, форумчане! Подскажите, пожалуйста, с решением задачи: в ячейку А1 вбит полный путь к экселевскому файлу, включая имя...

Сбор данных из разных книг
Добрый день! Помогите решить вопрос: Есть папка с 100+ файлами, там примерно одни и те же данные, но с разными названиями/порядком...

14
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
21.05.2015, 20:35
1. Где находится это "множкество книг" - в той же папке, где целевая книга, или в другой папке, или в структуре папок?
2. Приведите примеры названий книг целиком, а то непонятно.
3. Как часто нужно проверять наличие новых книг? Только при открытии целевой книги - устроит?
0
 Аватар для zver0555
5 / 5 / 0
Регистрация: 03.08.2010
Сообщений: 246
22.05.2015, 10:01  [ТС]
Казанский, к примеру , сегодня я создаю новую книгу ее названием будет сегодняшняя дата и порядковый номер,с каждым новым документом Excel его порядковый номер будет увеличиваться на 1, не зависимо какого числа он был создан. Например сегодня это будет 21.05.2015(1) , а завтра 22.05.2015(2). Так же может быть 21.05.2015(1) , 21.05.2015(2) и так далее.
Целевая книга находится в другой папке, например каталог папок (Папка№1, Папка№2, Папка№3 и так далее), Наличие новых книг нужно проверять в любое время при открытии целевой книги.

Добавлено через 13 часов 16 минут
Казанский, ?
0
 Аватар для KoGG
5640 / 1622 / 418
Регистрация: 23.12.2010
Сообщений: 2,430
Записей в блоге: 1
22.05.2015, 11:54
Макрос сумирует диапазоны "A1:J10" с листов с именем "Лист1" из всех книг в папке "C:\Temp2\".
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Sub Суммирование_книг()
    Const StartRow& = 1
    Const LastRow& = 10
    Const StartColumn$ = "A"
    Const LastColumn$ = "J"
    Const ImyaLista$ = "Лист1"
    Dim i%, j%, Path1$, MyFileName$, MyFullName1$
    Path1 = "C:\Temp2\"
    MyFileName = Dir(Path1 & "*.xls*")
    Do Until MyFileName = ""
        MyFullName1 = Path1 & MyFileName
        With TempMakros
            With .Range(StartColumn & StartRow & ":" & LastColumn & LastRow)
                .FormulaR1C1 = "='" & Path1 & "[" & MyFileName & "]" & ImyaLista & "'!" & "RC"
                DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents
                .Value = .Value
            End With
        End With
        With Лист1
            .Range(StartColumn & StartRow & ":" & LastColumn & LastRow).ClearContents
            For i = StartRow To LastRow
                For j = Range(StartColumn & "1").Column To Range(LastColumn & "1").Column
                    .Cells(i, j) = .Cells(i, j) + TempMakros.Cells(i, j)
                Next j
            Next i
        End With
        MyFileName = Dir
    Loop
End Sub
Вложения
Тип файла: rar Суммирование_Листов1_из_файлов_в_папке.rar (18.1 Кб, 53 просмотров)
0
 Аватар для KoGG
5640 / 1622 / 418
Регистрация: 23.12.2010
Сообщений: 2,430
Записей в блоге: 1
22.05.2015, 14:04
Вариант - меньше констант:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub Суммирование_книг()
    Const DiaSum$ = "A1:J10"
    Const ImyaLista$ = "Лист1"
    Dim i%, j%, Path1$, MyFileName$, MyFullName1$
    Path1 = "C:\Temp2\"
    MyFileName = Dir(Path1 & "*.xls*")
    Do Until MyFileName = ""
        MyFullName1 = Path1 & MyFileName
        With TempMakros
            With .Range(DiaSum)
                .FormulaR1C1 = "='" & Path1 & "[" & MyFileName & "]" & ImyaLista & "'!" & "RC"
                DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents
                .Value = .Value
            End With
        End With
        With Лист1.Range(DiaSum)
            .ClearContents
            For i = 1 To .Rows.Count
                For j = 1 To .Columns.Count
                    .Cells(i, j) = .Cells(i, j) + TempMakros.Cells(i, j)
                Next j
            Next i
        End With
        MyFileName = Dir
    Loop
End Sub
1
 Аватар для zver0555
5 / 5 / 0
Регистрация: 03.08.2010
Сообщений: 246
24.05.2015, 01:06  [ТС]
KoGG, Мы пытались изменить под себя , но не получилось. На нашем примере можешь сделать , C:\zirkon\back\Vita путь к одной из папок , в ней находится множество документов Эксель , из которых надо собрать и просуммировать числа из ячеек M20 лист называется Наряд заказа. все это в отдельный файл, как просил выше. Все тоже только вот адреса другие

Добавлено через 11 часов 32 минуты
KoGG, и тот макрос , что ты скинул выводит данные только из одного произвольного файла , а не сумму из ячеек в диапазоне, всех файлов .
0
 Аватар для KoGG
5640 / 1622 / 418
Регистрация: 23.12.2010
Сообщений: 2,430
Записей в блоге: 1
25.05.2015, 09:22
У меня суммирует все файлы Excel, находящиеся в целевой папке.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub Суммирование_книг()
    Const DiaSum$ = "M20"
    Const ImyaLista$ = "Наряд заказа"
    Dim i%, j%, Path1$, MyFileName$, MyFullName1$
    Path1 = "C:\zirkon\back\Vita\"
    MyFileName = Dir(Path1 & "*.xls*")
    Do Until MyFileName = ""
        MyFullName1 = Path1 & MyFileName
        With TempMakros
            With .Range(DiaSum)
                .FormulaR1C1 = "='" & Path1 & "[" & MyFileName & "]" & ImyaLista & "'!" & "RC"
                DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents
                .Value = .Value
            End With
        End With
        With Лист1.Range(DiaSum)
            .ClearContents
            For i = 1 To .Rows.Count
                For j = 1 To .Columns.Count
                    .Cells(i, j) = .Cells(i, j) + TempMakros.Cells(i, j)
                Next j
            Next i
        End With
        MyFileName = Dir
    Loop
End Sub
Важно добавить в имя листа пробел в конце, если он там есть.
0
 Аватар для zver0555
5 / 5 / 0
Регистрация: 03.08.2010
Сообщений: 246
26.05.2015, 13:21  [ТС]
KoGG, Все ровно не получается... она просто выводит цифру 2 не понятно от куда
0
 Аватар для KoGG
5640 / 1622 / 418
Регистрация: 23.12.2010
Сообщений: 2,430
Записей в блоге: 1
26.05.2015, 16:09
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub Суммирование_книг()
    Const DiaSum$ = "M20"
    Const ImyaLista$ = "Наряд заказа"
    Dim i%, j%, Path1$, MyFileName$, MyFullName1$
    Path1 = "C:\zirkon\back\Vita\"
    MyFileName = Dir(Path1 & "*.xls*")
    Лист1.Range(DiaSum).ClearContents
    Do Until MyFileName = ""
        MyFullName1 = Path1 & MyFileName
        With TempMakros
            With .Range(DiaSum)
                .FormulaR1C1 = "='" & Path1 & "[" & MyFileName & "]" & ImyaLista & "'!" & "RC"
                DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents
                .Value = .Value
            End With
        End With
        With Лист1.Range(DiaSum)
            For i = 1 To .Rows.Count
                For j = 1 To .Columns.Count
                    .Cells(i, j) = .Cells(i, j) + TempMakros.Range(DiaSum).Cells(i, j)
                Next j
            Next i
        End With
        MyFileName = Dir
    Loop
End Sub
0
 Аватар для zver0555
5 / 5 / 0
Регистрация: 03.08.2010
Сообщений: 246
27.05.2015, 11:15  [ТС]
KoGG,
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 Private Sub Workbook_Open()
    Dim iPath$, iFileName$, iAddress$, iResult#, iCellValue As Variant
 
    iPath = "C:\Zirkon\Back\Vita\"
    iFileName = Dir(iPath & "*.xls*")
 
    While Len(iFileName)
       iAddress = "'" & iPath & "[" & iFileName & "]Наряд заказа'!R20C13"
       iCellValue = ExecuteExcel4Macro(iAddress)
       
       If IsNumeric(iCellValue) Then iResult = iResult + iCellValue
       iFileName = Dir
    Wend
 
    Лист1.[M20] = iResult 'MsgBox iResult, , ""
End Sub

это работает для одного пути , для одной папки , как дописать множество других папок , которые я захочу добавить? К примеру Vita выводится в ячейку М20 , а я хочу чтоб еще в добавок в ячейку М21 выводился результат из папки 7Небо
0
 Аватар для AntikBantik
83 / 60 / 21
Регистрация: 03.12.2014
Сообщений: 232
27.05.2015, 11:34
zver0555, ставите курсор на ячейку и жмякаете сочетание клавиш Ctrl+o. Смотрите файл
Вложения
Тип файла: xls выбор файла.xls (40.5 Кб, 28 просмотров)
0
 Аватар для AntikBantik
83 / 60 / 21
Регистрация: 03.12.2014
Сообщений: 232
27.05.2015, 12:11
zver0555,вот еще один пример, разница в том что в этом файле выбирается папка (алгоритм тот же что и в Вашем коде VBA: выбор папки с сложение всех чисел во всех файлах в выбранной директории и запись ее в ячейке М20). Если Вам надо записать суммы чисел из других файлов в другой папке, то выделяете ячейку и сочетание клавиш CTRL+L
Вложения
Тип файла: xls выбор файла(2).xls (48.5 Кб, 25 просмотров)
0
 Аватар для KoGG
5640 / 1622 / 418
Регистрация: 23.12.2010
Сообщений: 2,430
Записей в блоге: 1
27.05.2015, 13:26
Лучший ответ Сообщение было отмечено zver0555 как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub Workbook_Open()
    Dim k%, iPath, iFileName$, iAddress$, iResult#, diaResult, iCellValue As Variant
    iPath = Array("C:\Zirkon\Back\Vita\", "C:\Zirkon\Back\7Небо\")
    diaResult = Array("M20", "M21") ' ячейки результатов для соответствующей папки
    For k = 0 To UBound(iPath)
        iResult = 0
        iFileName = Dir(iPath(k) & "*.xls*")
        While Len(iFileName)
            iAddress = "'" & iPath(k) & "[" & iFileName & "]Наряд заказа'!R20C13"
            iCellValue = Val(Replace(ExecuteExcel4Macro(iAddress), ",", ".")) ' Для правильного суммирования дробной части
            iResult = iResult + iCellValue
            iFileName = Dir
        Wend
        Sheets("Лист1").Range(diaResult(k)) = iResult
    Next k
End Sub
1
 Аватар для pashulka
4138 / 2242 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
27.05.2015, 20:39
KoGG, Val(Replace()) - это месть автору вопроса за то, что замучил Вас своими требованиям ? которые, кстати, ещё не иссякли

Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub Test()
    Dim a#, b#
    a = 1.137
    b = 2.456
    
    MsgBox a + b 'My Version
    
    MsgBox Val(Replace(a, ",", ".")) + Val(Replace(b, ",", ".")) 'KoGG
End Sub
0
 Аватар для zver0555
5 / 5 / 0
Регистрация: 03.08.2010
Сообщений: 246
29.05.2015, 11:10  [ТС]
KoGG, Благодарю вас за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.05.2015, 11:10
Помогаю со студенческими работами здесь

Сбор данных из разных книг (с доп условием)
Подскажите пожалуйста, очень надо, как сформировать массив из файлов эксель где у каждого есть только 1 лист с не повторяющемся именем (во...

Сбор данных из разных книг (доработка макроса)
Всем добрый день! Задача сложная, с моим уровнем знаний вообще не выполнимая. У меня есть 7 файлов(их прикрепляю), 1-ый - Наша база...

Сбор ячеек из разных книг в одну строку новой книги
Как человек не разбирающийся прошу помощи в создании макроса. Есть задача собрать данные для дальнейших операций с ними (выборки,...

Сбор данных из книг Excel из указанной сетевой папки
О великие гуру Exсel, обращаюсь к Вам за помощью! Не откажите полному профану в Exсel Мучаюсь я вот с чем. Каждый месяц собираю с 450...

Сбор информации с разных файлов
Кто может помочь в написании не сложного (а для меня очень сложного :) ) макроса. Суть в следующем. Есть excel файл с названием...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru