Дали "книгу" с одним листом "Заяка отдела", которую все отделы раздублировали в той же папке (книга-отдел1, книга-отдел2 и т.д.) и вбили свои данные в столбик "квартал4". Надо бы свести в основную "книгу" и книгу отправить почтой. Сделал суммой (='F:\папка\[книга-отдел1.xlsm]Заяка отдела'!$H22+'F:\папка\[книга-отдел2.xlsm]Заяка отдела'!$H22+), но потом надо скопировать и вставить только значения, чтобы связи не порушились из-за отсутствия остальных файлов рядом. А вот бы скриптик - сложи из всех лежащих в папке файликов ячейку в Н22 из всех Н22, в Н23 из всех Н23 и т.д.(квартал 4), ну потом будет 1 квартал Е22. Заранее благодарствую откликнувшимся и сорри если подобное, искал, не нашел,ткните в таком случае.
Дали "книгу" с одним листом "Заяка отдела", которую все отделы раздублировали в той же папке (книга-отдел1, книга-отдел2 и т.д.) и вбили свои данные в столбик "квартал4". Надо бы свести в основную "книгу" и книгу отправить почтой. Сделал суммой (='F:\папка\[книга-отдел1.xlsm]Заяка отдела'!$H22+'F:\папка\[книга-отдел2.xlsm]Заяка отдела'!$H22+), но потом надо скопировать и вставить только значения, чтобы связи не порушились из-за отсутствия остальных файлов рядом. А вот бы скриптик - сложи из всех лежащих в папке файликов ячейку в Н22 из всех Н22, в Н23 из всех Н23 и т.д.(квартал 4), ну потом будет 1 квартал Е22. Заранее благодарствую откликнувшимся и сорри если подобное, искал, не нашел,ткните в таком случае.SARAN
Private Function GetValue(path, file, sheet, ref) 'Функция GetValue имеет четыре аргумента: '¦ path – путь к закрытому файлу (например, "d:\files"); '¦ file – название рабочей книги (например, "budget.xls"); '¦ sheet – название рабочего листа (например, "Лист1"); '¦ ref – ссылка на ячейку (например, "C4"). Dim arg As String If Right(path, 1) <> "\" Then path = path & "\" If Dir(path & file) = "" Then GetValue = "Файл не найден" Exit Function End If arg = "'" & path & "[" & file & "]" & sheet & "'!" & _ Range(ref).Range("A1").Address(, , xlR1C1) GetValue = ExecuteExcel4Macro(arg) End Function
Sub Сбор_инфы() p = ActiveWorkbook.path i = 1 f = Dir(p & "\отдел" & i & ".xls") Do While f <> "" DoEvents s = "Заяка отдела" For r = 22 To 35 a = Cells(r, 9).Address t = GetValue(p, f, s, a) Cells(r, 9) = Cells(r, 9) + t Next r i = i + 1 f = Dir(p & "\отдел" & i & ".xls") Loop End Sub
[/vba] подкорректируй под свои нужды (у меня 2003)
можно так: [vba]
Код
Private Function GetValue(path, file, sheet, ref) 'Функция GetValue имеет четыре аргумента: '¦ path – путь к закрытому файлу (например, "d:\files"); '¦ file – название рабочей книги (например, "budget.xls"); '¦ sheet – название рабочего листа (например, "Лист1"); '¦ ref – ссылка на ячейку (например, "C4"). Dim arg As String If Right(path, 1) <> "\" Then path = path & "\" If Dir(path & file) = "" Then GetValue = "Файл не найден" Exit Function End If arg = "'" & path & "[" & file & "]" & sheet & "'!" & _ Range(ref).Range("A1").Address(, , xlR1C1) GetValue = ExecuteExcel4Macro(arg) End Function
Sub Сбор_инфы() p = ActiveWorkbook.path i = 1 f = Dir(p & "\отдел" & i & ".xls") Do While f <> "" DoEvents s = "Заяка отдела" For r = 22 To 35 a = Cells(r, 9).Address t = GetValue(p, f, s, a) Cells(r, 9) = Cells(r, 9) + t Next r i = i + 1 f = Dir(p & "\отдел" & i & ".xls") Loop End Sub
[/vba] подкорректируй под свои нужды (у меня 2003)alex77755
Посмотрите вариант с консолидацией сделал на разные листы одной книги, но с разными файлами все аналогично. Вам нужно ОДИН раз все настроить (как показано на рисунке в файле), а потом только перезапускать консолидацию. Можно всю ручную настройку сделать макросом, но на советую, поскольку Вы, похоже, с ними (макросами) не очень дружите. Гораздо проще потратить 10 минут и настроить все руками.
Посмотрите вариант с консолидацией сделал на разные листы одной книги, но с разными файлами все аналогично. Вам нужно ОДИН раз все настроить (как показано на рисунке в файле), а потом только перезапускать консолидацию. Можно всю ручную настройку сделать макросом, но на советую, поскольку Вы, похоже, с ними (макросами) не очень дружите. Гораздо проще потратить 10 минут и настроить все руками._Boroda_
Вариант: 1. макрос "считает" строки документа по столбу В - количество строк в заявке не критично, 1. файлы-отделы должны находиться в одном каталоге с файлом "Заявка", 1.1. имена файлов-отделов - любые, 2. в столбах E,F,G,H в "заголовочных" строках, как то: "Ручки / Стержни / Карандаши / Маркеры" и пр. - наложить условное форматирование (если 0, то белый цвет).
Вариант: 1. макрос "считает" строки документа по столбу В - количество строк в заявке не критично, 1. файлы-отделы должны находиться в одном каталоге с файлом "Заявка", 1.1. имена файлов-отделов - любые, 2. в столбах E,F,G,H в "заголовочных" строках, как то: "Ручки / Стержни / Карандаши / Маркеры" и пр. - наложить условное форматирование (если 0, то белый цвет).Матрёна
Спасибо, Александр, правда получается формула наподобие как и сумма только что в строке не палится огромная формула и отправить файл можно, не будут связи порушены, так? и еще, в момент консолидации, файлы открыты должны быть да, пишет невозможно открыть?
Матрёна, пасибки, сейчас гляну и ваш
Спасибо, Александр, правда получается формула наподобие как и сумма только что в строке не палится огромная формула и отправить файл можно, не будут связи порушены, так? и еще, в момент консолидации, файлы открыты должны быть да, пишет невозможно открыть?
Уважаемые Гуру! Дабы не создавать отдельную тему по данному топику, который весьма полезный, имеется вопрос один: Как можно отвязать Имена файлов типа Отдел1, т.к. у меня данные будут собираться под другими названиями файлов. Как это можно в прописать в коде? Большое спасибо что не сильно пнули.
Уважаемые Гуру! Дабы не создавать отдельную тему по данному топику, который весьма полезный, имеется вопрос один: Как можно отвязать Имена файлов типа Отдел1, т.к. у меня данные будут собираться под другими названиями файлов. Как это можно в прописать в коде? Большое спасибо что не сильно пнули. bosika
Начинающий. Много и долго не пинать. Больно однако.