Здравствуйте. Возникла необходимость объединить 4 файла формата XLS, в каждом из которых по 4 листа с данными, в один, так, чтобы в новый файл вставлялись те-же самые листы, т.е. с таким же названием как в исходных файлах, и объединенные данные со всех 4 файлов. (названия листов и заголовки всех полей одинаковы). Объединять мне необходимо их раз в час/два, так как эти 4 файла обновляются очень часто, поэтому хотелось бы осуществлять это в автоматическом режиме. Подскажите, пожалуйста, как это осуществить. Пример исходных данных и то, что хочу получить, прилагаю ниже. С Уважением, falcar.
Здравствуйте. Возникла необходимость объединить 4 файла формата XLS, в каждом из которых по 4 листа с данными, в один, так, чтобы в новый файл вставлялись те-же самые листы, т.е. с таким же названием как в исходных файлах, и объединенные данные со всех 4 файлов. (названия листов и заголовки всех полей одинаковы). Объединять мне необходимо их раз в час/два, так как эти 4 файла обновляются очень часто, поэтому хотелось бы осуществлять это в автоматическом режиме. Подскажите, пожалуйста, как это осуществить. Пример исходных данных и то, что хочу получить, прилагаю ниже. С Уважением, falcar.Falcar
Можно, конечно, и формулами. Но муторно и затратно по ресурсам. Макросы никак?
Макросом было бы идеально. Но к сожалению написать такой макрос с нуля я не в состоянии. Может есть уже какие-либо готовые подобные макросы, которые надо лишь подкорректировать под мой случай.
Можно, конечно, и формулами. Но муторно и затратно по ресурсам. Макросы никак?
Макросом было бы идеально. Но к сожалению написать такой макрос с нуля я не в состоянии. Может есть уже какие-либо готовые подобные макросы, которые надо лишь подкорректировать под мой случай.Falcar
Сообщение отредактировал Falcar - Четверг, 31.10.2013, 10:27
Не, ну можно просто собрать данные. Смотрите пример. Там, конечно, многие условия не проверяются (например, наличие файлов или лишние листы), но результат примерно подходит.
С другой стороны, можно сделать то же самое быстрее и проще через ADO... но это я оставлю как вариант для "Готовых решений" по теме "Консолидация данных из внешних источников"
Не, ну можно просто собрать данные. Смотрите пример. Там, конечно, многие условия не проверяются (например, наличие файлов или лишние листы), но результат примерно подходит.
С другой стороны, можно сделать то же самое быстрее и проще через ADO... но это я оставлю как вариант для "Готовых решений" по теме "Консолидация данных из внешних источников" AndreTM
Здравствуйте, уважаемые господа! У меня такой вопрос: работал в 2010-м пакете, тут что-то подбился перейти на 2013-ый продукт. Естественно, всё переустановилось с сохранением всех надстроек и специальных кнопок, выведенных на экспресс-панель, которыми я часто пользуюсь. Но так как я часто работаю с двумя и более открытыми файлами, то, в связи с этим, есть одна неурядица: я никак не могу заставить Excel 2013 отображать два файла внутри одного окна, чтобы при открытии двух файлов меню было на всех общее, а не сминалось над каждым файлом. В 2010 где-то была такая галочка, которая меняла такие параметры, но видел я её в последний раз аж 2011 году и сейчас ни найти, ни вспомнить не могу! Пожалуйста, помогите: где эта галочка?
Спасибо Вам большое!!! [moder]Ну вот скажите мне пожалуйста - при чем тут тема, к которой Вы примазались своим вопросом? Вам, похоже, нужно ЕЩЕ раз перечитать правила форума. А потом создать свою тему.
Здравствуйте, уважаемые господа! У меня такой вопрос: работал в 2010-м пакете, тут что-то подбился перейти на 2013-ый продукт. Естественно, всё переустановилось с сохранением всех надстроек и специальных кнопок, выведенных на экспресс-панель, которыми я часто пользуюсь. Но так как я часто работаю с двумя и более открытыми файлами, то, в связи с этим, есть одна неурядица: я никак не могу заставить Excel 2013 отображать два файла внутри одного окна, чтобы при открытии двух файлов меню было на всех общее, а не сминалось над каждым файлом. В 2010 где-то была такая галочка, которая меняла такие параметры, но видел я её в последний раз аж 2011 году и сейчас ни найти, ни вспомнить не могу! Пожалуйста, помогите: где эта галочка?
Спасибо Вам большое!!! [moder]Ну вот скажите мне пожалуйста - при чем тут тема, к которой Вы примазались своим вопросом? Вам, похоже, нужно ЕЩЕ раз перечитать правила форума. А потом создать свою тему.Григорополисец
Здравствуйте, уважаемые господа! У меня такой вопрос: работал в 2010-м пакете, тут что-то подбился перейти на 2013-ый продукт. Естественно, всё переустановилось с сохранением всех надстроек и специальных кнопок, выведенных на экспресс-панель, которыми я часто пользуюсь. Но так как я часто работаю с двумя и более открытыми файлами, то, в связи с этим, есть одна неурядица: я никак не могу заставить Excel 2013 отображать два файла внутри одного окна, чтобы при открытии двух файлов меню было на всех общее, а не сминалось над каждым файлом. В 2010 где-то была такая галочка, которая меняла такие параметры, но видел я её в последний раз аж 2011 году и сейчас ни найти, ни вспомнить не могу! Пожалуйста, помогите: где эта галочка?
Спасибо Вам большое!!! [moder]Еще одно нарушение - бан на сутки.
Здравствуйте, уважаемые господа! У меня такой вопрос: работал в 2010-м пакете, тут что-то подбился перейти на 2013-ый продукт. Естественно, всё переустановилось с сохранением всех надстроек и специальных кнопок, выведенных на экспресс-панель, которыми я часто пользуюсь. Но так как я часто работаю с двумя и более открытыми файлами, то, в связи с этим, есть одна неурядица: я никак не могу заставить Excel 2013 отображать два файла внутри одного окна, чтобы при открытии двух файлов меню было на всех общее, а не сминалось над каждым файлом. В 2010 где-то была такая галочка, которая меняла такие параметры, но видел я её в последний раз аж 2011 году и сейчас ни найти, ни вспомнить не могу! Пожалуйста, помогите: где эта галочка?
Спасибо Вам большое!!! [moder]Еще одно нарушение - бан на сутки.Григорополисец
Не, ну можно просто собрать данные. Смотрите пример. Там, конечно, многие условия не проверяются (например, наличие файлов или лишние листы), но результат примерно подходит.
Спасибо за то что откликнулись на мою просьбу. Как раз то что мне надо. 3 моих файла обьединяются нормально, но при обьединении 4-го пишет ошибку: Set rDest = rDest.Offset(rDest.Rows.Count).Cells(1, 1) В 4-ом файле, в 3-ьем листе содержится около 35000 записей (строчек), если я удаляю около 5-ти тысяч записей и оставляю 30000 то все работает нормально, а например при 31000 записей снова появляется ошибка. Не могли бы Вы подсказать с чем это связано?
Не, ну можно просто собрать данные. Смотрите пример. Там, конечно, многие условия не проверяются (например, наличие файлов или лишние листы), но результат примерно подходит.
Спасибо за то что откликнулись на мою просьбу. Как раз то что мне надо. 3 моих файла обьединяются нормально, но при обьединении 4-го пишет ошибку: Set rDest = rDest.Offset(rDest.Rows.Count).Cells(1, 1) В 4-ом файле, в 3-ьем листе содержится около 35000 записей (строчек), если я удаляю около 5-ти тысяч записей и оставляю 30000 то все работает нормально, а например при 31000 записей снова появляется ошибка. Не могли бы Вы подсказать с чем это связано?Falcar
Наверное, с тем, что не надо работать в режиме совместимости - у 2003-го ограничение на 64к строк на один лист. Вам надо мой исходный файл-обработку пересохранить в формате Excel 2010 (xlsm/xlsb), а затем уже запускать.
Наверное, с тем, что не надо работать в режиме совместимости - у 2003-го ограничение на 64к строк на один лист. Вам надо мой исходный файл-обработку пересохранить в формате Excel 2010 (xlsm/xlsb), а затем уже запускать.AndreTM
Извините, не знаю, как отправилось второе сообщение, тем более с разницей в 4 минуты. И банить новичков не справедливо - пока тут у вас разберёшься... [moder]Лавый верхний угол - кнопка Правил форума. Жмете. Читаете. Действуете в соответствии.
Извините, не знаю, как отправилось второе сообщение, тем более с разницей в 4 минуты. И банить новичков не справедливо - пока тут у вас разберёшься... [moder]Лавый верхний угол - кнопка Правил форума. Жмете. Читаете. Действуете в соответствии.Григорополисец
Наверное, с тем, что не надо работать в режиме совместимости - у 2003-го ограничение на 64к строк на один лист. Вам надо мой исходный файл-обработку пересохранить в формате Excel 2010 (xlsm/xlsb), а затем уже запускать.
Премного благодарен, все получилось. Единственное что теперь придется перед каждым объединением все исходные данные пересохранять в XLSX, а затем только запускать Ваш файл, но это делать намного быстрее чем я делал раньше.
Наверное, с тем, что не надо работать в режиме совместимости - у 2003-го ограничение на 64к строк на один лист. Вам надо мой исходный файл-обработку пересохранить в формате Excel 2010 (xlsm/xlsb), а затем уже запускать.
Премного благодарен, все получилось. Единственное что теперь придется перед каждым объединением все исходные данные пересохранять в XLSX, а затем только запускать Ваш файл, но это делать намного быстрее чем я делал раньше.Falcar
придется перед каждым объединением все исходные данные пересохранять в XLSX
Зачем? Пересохранить надо было только мой файл (чтобы он открывался 2010-ым) и указать для конечного файла сохранение в формате 2010 (разберётесь в коде? или можно сохранять как XLSX только первый из объединяемых файлов - именно на его основе создаётся результирующий файл). И всё, остальные исходные данные могут быть хоть в формате Excel97...
придется перед каждым объединением все исходные данные пересохранять в XLSX
Зачем? Пересохранить надо было только мой файл (чтобы он открывался 2010-ым) и указать для конечного файла сохранение в формате 2010 (разберётесь в коде? или можно сохранять как XLSX только первый из объединяемых файлов - именно на его основе создаётся результирующий файл). И всё, остальные исходные данные могут быть хоть в формате Excel97...AndreTM
Зачем? Пересохранить надо было только мой файл (чтобы он открывался 2010-ым) и указать для конечного файла сохранение в формате 2010 (разберётесь в коде? или можно сохранять как XLSX только первый из объединяемых файлов - именно на его основе создаётся результирующий файл). И всё, остальные исходные данные могут быть хоть в формате Excel97...
Если делать как Вы говорите, программа ругается на строчку: Set rSour = Range(wb2.Sheets(c.Value).Cells(nShiftRow + 1, nShiftCol + 1), rSour.Offset(rSour.Rows.Count - 1, rSour.Columns.Count - 1).Cells(1, 1)) А если все исходники в XLSX то все работает нормально.
Зачем? Пересохранить надо было только мой файл (чтобы он открывался 2010-ым) и указать для конечного файла сохранение в формате 2010 (разберётесь в коде? или можно сохранять как XLSX только первый из объединяемых файлов - именно на его основе создаётся результирующий файл). И всё, остальные исходные данные могут быть хоть в формате Excel97...
Если делать как Вы говорите, программа ругается на строчку: Set rSour = Range(wb2.Sheets(c.Value).Cells(nShiftRow + 1, nShiftCol + 1), rSour.Offset(rSour.Rows.Count - 1, rSour.Columns.Count - 1).Cells(1, 1)) А если все исходники в XLSX то все работает нормально.Falcar