Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос для сбора данных из нескольких книг в одну - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Макрос для сбора данных из нескольких книг в одну
EL85 Дата: Четверг, 26.12.2019, 10:21 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Добрый день! Появилась необходимость работать с данными посредствам VBA. Если Иксель в какой-то мере стал понятным и местами даже родным, то написание кода – пока нет.
Есть задача, которая требует ежемесячного обновления одного файла данными из пяти других.
Спешу заверить, что форумы я читал, статьи читал, код посложнее чем Hello world осилил, НО сложность и оперативность вышеозначенной задачки вынуждает меня просить о помощи…
Поэтому, я обращаюсь, чтобы получить готовый макрос и уже на его основе изучить как это и что это…
Итак, есть 2 типа иксель файлов:
База данных (БД), это файл, в который должны попадать данные из следующего типа файлов. Макрос должен запускаться из БД.
5 иксель файлов, это источники данных для БД, назовем их Источник 1, Источник 2, … или совокупно – Источники.
МЕХАНИКА СБОРА ДАННЫХ:
Каждый месяц я открываю БД и запускаю макрос. Перед этим, я помещаю 5 файлов Источников в определенную папку.
ВАЖНЫЕ ОБСТОЯТЕЛЬСТВА ПРОЦЕССА:
1) БД и Источники находятся в определенных папках, перемещение не планируется.
2) Источники – это всегда 5 иксель файлов.
3) Источники каждый месяц помещаются в папку, отдают данные для БД, удаляются и в следующем месяце их место занимаются новые 5 файлов.
4) Каждый из 5 файлов Источников имеет одинаковую структуру, т.е. в каждом Источнике есть 5 листов, содержат обычные таблицы с заголовками и разными форматами значений: текст, число, процент. Листы в каждом Источнике названы одинаково. Столбцы названы одинаково. Объем данных в целом идентичен, кроме как на листе SKU data flat кол-во строк может варьироваться от примерно 150 до 400+.
5) БД тоже содержит 5 листов, название которых нарочно совпадает с таковыми в любом из Источников.
6) На каждый лист БД данные из Источников должны попадать в каждую последующую свободную строку, чтобы не затирать данные, которые там уже будут на тот момент.

ПРИМЕР:
В январе 2020 г., в Data Base на лист SKU data flat, должны попасть данные с листа SKU data flat из источника PREE_Operations report_PRU, PREE_Operations report_PRK и других 3х источников.
На лист Log data flat должны попасть данные с листа Log data flat из источника PREE_Operations report_PRU, PREE_Operations report_PRK и других 3х источников.
И так далее по всем 5 листам. Заполнение линейное, то есть сперва 1й лист Data Base

Набор корректных имен для кода:
Файл БД = Data Base,
Имена Источников:
PREE_Operations report_PRU
PREE_Operations report_PRK
PREE_Operations report_PRR
PREE_Operations report_PRA
PREE_Operations report_PRM
Имена 5 листов в БД и Источниках: SKU data flat, Log data flat, Invent data flat, Stock evo flat, Cost flat
Я заранее благодарю того, кто возьмется за задачу! Попытки написать код я сознательно не выкладываю, потому что там бред. Прилагаю лишь файл Data Base и пример одного из 5 источников (рыжие листы).
Если правила предполагают вознаграждение – прошу скоординировать по дальнейшим действиям.
Спасибо.
К сообщению приложен файл: Data_Base.xlsx (78.1 Kb) · PREE_Operations.xlsx (96.0 Kb)
 
Ответить
СообщениеДобрый день! Появилась необходимость работать с данными посредствам VBA. Если Иксель в какой-то мере стал понятным и местами даже родным, то написание кода – пока нет.
Есть задача, которая требует ежемесячного обновления одного файла данными из пяти других.
Спешу заверить, что форумы я читал, статьи читал, код посложнее чем Hello world осилил, НО сложность и оперативность вышеозначенной задачки вынуждает меня просить о помощи…
Поэтому, я обращаюсь, чтобы получить готовый макрос и уже на его основе изучить как это и что это…
Итак, есть 2 типа иксель файлов:
База данных (БД), это файл, в который должны попадать данные из следующего типа файлов. Макрос должен запускаться из БД.
5 иксель файлов, это источники данных для БД, назовем их Источник 1, Источник 2, … или совокупно – Источники.
МЕХАНИКА СБОРА ДАННЫХ:
Каждый месяц я открываю БД и запускаю макрос. Перед этим, я помещаю 5 файлов Источников в определенную папку.
ВАЖНЫЕ ОБСТОЯТЕЛЬСТВА ПРОЦЕССА:
1) БД и Источники находятся в определенных папках, перемещение не планируется.
2) Источники – это всегда 5 иксель файлов.
3) Источники каждый месяц помещаются в папку, отдают данные для БД, удаляются и в следующем месяце их место занимаются новые 5 файлов.
4) Каждый из 5 файлов Источников имеет одинаковую структуру, т.е. в каждом Источнике есть 5 листов, содержат обычные таблицы с заголовками и разными форматами значений: текст, число, процент. Листы в каждом Источнике названы одинаково. Столбцы названы одинаково. Объем данных в целом идентичен, кроме как на листе SKU data flat кол-во строк может варьироваться от примерно 150 до 400+.
5) БД тоже содержит 5 листов, название которых нарочно совпадает с таковыми в любом из Источников.
6) На каждый лист БД данные из Источников должны попадать в каждую последующую свободную строку, чтобы не затирать данные, которые там уже будут на тот момент.

ПРИМЕР:
В январе 2020 г., в Data Base на лист SKU data flat, должны попасть данные с листа SKU data flat из источника PREE_Operations report_PRU, PREE_Operations report_PRK и других 3х источников.
На лист Log data flat должны попасть данные с листа Log data flat из источника PREE_Operations report_PRU, PREE_Operations report_PRK и других 3х источников.
И так далее по всем 5 листам. Заполнение линейное, то есть сперва 1й лист Data Base

Набор корректных имен для кода:
Файл БД = Data Base,
Имена Источников:
PREE_Operations report_PRU
PREE_Operations report_PRK
PREE_Operations report_PRR
PREE_Operations report_PRA
PREE_Operations report_PRM
Имена 5 листов в БД и Источниках: SKU data flat, Log data flat, Invent data flat, Stock evo flat, Cost flat
Я заранее благодарю того, кто возьмется за задачу! Попытки написать код я сознательно не выкладываю, потому что там бред. Прилагаю лишь файл Data Base и пример одного из 5 источников (рыжие листы).
Если правила предполагают вознаграждение – прошу скоординировать по дальнейшим действиям.
Спасибо.

Автор - EL85
Дата добавления - 26.12.2019 в 10:21
китин Дата: Четверг, 26.12.2019, 10:38 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7029
Репутация: 1078 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Если правила предполагают вознаграждение

перенести тему в раздел Работа/Фриланс?


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщение
Если правила предполагают вознаграждение

перенести тему в раздел Работа/Фриланс?

Автор - китин
Дата добавления - 26.12.2019 в 10:38
EL85 Дата: Четверг, 26.12.2019, 10:45 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
китин, доброе утро, не понятен вопрос, не могли бы пожалуйста перефразировать и без пропуска букв? Спасибо.


Сообщение отредактировал EL85 - Четверг, 26.12.2019, 10:46
 
Ответить
Сообщениекитин, доброе утро, не понятен вопрос, не могли бы пожалуйста перефразировать и без пропуска букв? Спасибо.

Автор - EL85
Дата добавления - 26.12.2019 в 10:45
RAN Дата: Четверг, 26.12.2019, 12:14 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
я обращаюсь, чтобы получить готовый макрос и уже на его основе изучить как это и что это…

Получите


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Четверг, 26.12.2019, 12:15
 
Ответить
Сообщение
я обращаюсь, чтобы получить готовый макрос и уже на его основе изучить как это и что это…

Получите

Автор - RAN
Дата добавления - 26.12.2019 в 12:14
Michael_S Дата: Четверг, 26.12.2019, 12:17 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
китин, доброе утро, не понятен вопрос, не могли бы пожалуйста перефразировать и без пропуска букв?
Если правила предполагают вознаграждение – прошу скоординировать по дальнейшим действиям.

Вознаграждение предполагают не правила, а объём поставленной задачи. В этом случае тему нужно располагать в разделе Работа / Фриланс
[p.s.]Если ни с кем еще не договаривались - пишите мне в личку.[/p.s.]
 
Ответить
Сообщение
китин, доброе утро, не понятен вопрос, не могли бы пожалуйста перефразировать и без пропуска букв?
Если правила предполагают вознаграждение – прошу скоординировать по дальнейшим действиям.

Вознаграждение предполагают не правила, а объём поставленной задачи. В этом случае тему нужно располагать в разделе Работа / Фриланс
[p.s.]Если ни с кем еще не договаривались - пишите мне в личку.[/p.s.]

Автор - Michael_S
Дата добавления - 26.12.2019 в 12:17
EL85 Дата: Четверг, 26.12.2019, 13:44 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
RAN, Добрый день и спасибо заранее! К сожалению рабочий комп наглухо блокирует ссылку, попробую посмотреть ее дома.
 
Ответить
СообщениеRAN, Добрый день и спасибо заранее! К сожалению рабочий комп наглухо блокирует ссылку, попробую посмотреть ее дома.

Автор - EL85
Дата добавления - 26.12.2019 в 13:44
EL85 Дата: Четверг, 26.12.2019, 13:46 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Michael_S, теперь понял, спасибо. RAN прислал сообщение чуть ранее вашего и вероятно с решением, посмотрю что там и тогда уже соориентируюсь.
 
Ответить
СообщениеMichael_S, теперь понял, спасибо. RAN прислал сообщение чуть ранее вашего и вероятно с решением, посмотрю что там и тогда уже соориентируюсь.

Автор - EL85
Дата добавления - 26.12.2019 в 13:46
EL85 Дата: Четверг, 26.12.2019, 17:14 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
RAN, спасибо за ссылку, видел ее, когда искал решение в инете, но для меня это космос пока....
 
Ответить
СообщениеRAN, спасибо за ссылку, видел ее, когда искал решение в инете, но для меня это космос пока....

Автор - EL85
Дата добавления - 26.12.2019 в 17:14
cdj100 Дата: Четверг, 26.12.2019, 22:43 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день, нужна помощь в доработке макроса ниже:
В исходном варианте он копирует лист 1 из указанного набора книг в текущую книгу.
Хотелось бы, чтобы он копировал указанный диапазон (А1:A13) со всех листов 1 (также из всех выбранных книг) но начиная с выделенной мной ячейки текущей книги, в столбец слева направо. (например столбец А,B)
А при появлении новых книг, новые данные добавлял бы данные, начиная со столба С. И т.д.

Подскажите как корректно изменить код?

Sub CombineWorkbooks()
Dim FilesToOpen
Dim x As Integer

Application.ScreenUpdating = False 'отключаем обновление экрана для скорости

'вызываем диалог выбора файлов для импорта
FilesToOpen = Application.GetOpenFilename _
(FileFilter:="All files (*.*), *.*", _
MultiSelect:=True, Title:="Files to Merge")

If TypeName(FilesToOpen) = "Boolean" Then
MsgBox "Не выбрано ни одного файла!"
Exit Sub
End If

'проходим по всем выбранным файлам
x = 1
While x <= UBound(FilesToOpen)
Set importWB = Workbooks.Open(Filename:=FilesToOpen(x))
Sheets(1).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
importWB.Close savechanges:=False
x = x + 1
Wend

Application.ScreenUpdating = True
End Sub


Сообщение отредактировал cdj100 - Четверг, 26.12.2019, 22:45
 
Ответить
СообщениеДобрый день, нужна помощь в доработке макроса ниже:
В исходном варианте он копирует лист 1 из указанного набора книг в текущую книгу.
Хотелось бы, чтобы он копировал указанный диапазон (А1:A13) со всех листов 1 (также из всех выбранных книг) но начиная с выделенной мной ячейки текущей книги, в столбец слева направо. (например столбец А,B)
А при появлении новых книг, новые данные добавлял бы данные, начиная со столба С. И т.д.

Подскажите как корректно изменить код?

Sub CombineWorkbooks()
Dim FilesToOpen
Dim x As Integer

Application.ScreenUpdating = False 'отключаем обновление экрана для скорости

'вызываем диалог выбора файлов для импорта
FilesToOpen = Application.GetOpenFilename _
(FileFilter:="All files (*.*), *.*", _
MultiSelect:=True, Title:="Files to Merge")

If TypeName(FilesToOpen) = "Boolean" Then
MsgBox "Не выбрано ни одного файла!"
Exit Sub
End If

'проходим по всем выбранным файлам
x = 1
While x <= UBound(FilesToOpen)
Set importWB = Workbooks.Open(Filename:=FilesToOpen(x))
Sheets(1).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
importWB.Close savechanges:=False
x = x + 1
Wend

Application.ScreenUpdating = True
End Sub

Автор - cdj100
Дата добавления - 26.12.2019 в 22:43
Pelena Дата: Четверг, 26.12.2019, 22:49 | Сообщение № 10
Группа: Админы
Ранг: Местный житель
Сообщений: 19405
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
cdj100, Прочитайте Правила форума, создайте свою тему, оформите код тегами с помощью кнопки #
Правилами запрещено задавать новые вопросы в чужих темах


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщениеcdj100, Прочитайте Правила форума, создайте свою тему, оформите код тегами с помощью кнопки #
Правилами запрещено задавать новые вопросы в чужих темах

Автор - Pelena
Дата добавления - 26.12.2019 в 22:49
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!