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

Вход

Регистрация

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

 

= Мир MS Excel/Заполнение данными книги с одного листа - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Заполнение данными книги с одного листа (Макросы/Sub)
Заполнение данными книги с одного листа
ZamoK Дата: Среда, 29.10.2014, 15:16 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
Доброго дня !
Бродил по форуму наткнулся на чужой образец. Он очень близок к моему случаю.
При нажатии кнопки "Заполнить" на каждом листе данные заполняются. У меня таких листов около 70 %) . Можно ли Кнопочку перенести на лист /Сбор/ при её нажатии данные с этого листа заполняли все листы книги. Т.Е. все тоже самое только не на каждом листе заполнять, а на одном все.
К сообщению приложен файл: Excel_DB-1-.xlsm (46.4 Kb)


Я не Гуру, но стремлюсь!
 
Ответить
СообщениеДоброго дня !
Бродил по форуму наткнулся на чужой образец. Он очень близок к моему случаю.
При нажатии кнопки "Заполнить" на каждом листе данные заполняются. У меня таких листов около 70 %) . Можно ли Кнопочку перенести на лист /Сбор/ при её нажатии данные с этого листа заполняли все листы книги. Т.Е. все тоже самое только не на каждом листе заполнять, а на одном все.

Автор - ZamoK
Дата добавления - 29.10.2014 в 15:16
alex1248 Дата: Среда, 29.10.2014, 16:15 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 384
Репутация: 71 ±
Замечаний: 0% ±

Excel 2007, 2010
ZamoK, посмотрите такой вариант.
Кнопки и макрос, что уже были, остались, они работают, как работали. Впрочем, кнопки можно удалить.
На сводном листе дополнительная кнопка с процедурой по щелчку, для каждого листа выполняет старую процедуру, так что старый макрос удалять нельзя.
К сообщению приложен файл: Excel_DB-1-111.xlsm (45.6 Kb)


skype alex12481632
Qiwi +79276708519
 
Ответить
СообщениеZamoK, посмотрите такой вариант.
Кнопки и макрос, что уже были, остались, они работают, как работали. Впрочем, кнопки можно удалить.
На сводном листе дополнительная кнопка с процедурой по щелчку, для каждого листа выполняет старую процедуру, так что старый макрос удалять нельзя.

Автор - alex1248
Дата добавления - 29.10.2014 в 16:15
UltrasRW Дата: Среда, 29.10.2014, 16:15 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 5 ±
Замечаний: 0% ±

счеты деревянные
ZamoK, добавил в ваш код перебор листов книги
К сообщению приложен файл: 2137678.xlsm (40.3 Kb)
 
Ответить
СообщениеZamoK, добавил в ваш код перебор листов книги

Автор - UltrasRW
Дата добавления - 29.10.2014 в 16:15
ZamoK Дата: Среда, 29.10.2014, 16:35 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
alex1248, UltrasRW, Спасибо огромное Вариант alex1248, полностью устраивает, вариант UltrasRW, чтото со столбцами случилось , но все ровно спасибо


Я не Гуру, но стремлюсь!
 
Ответить
Сообщениеalex1248, UltrasRW, Спасибо огромное Вариант alex1248, полностью устраивает, вариант UltrasRW, чтото со столбцами случилось , но все ровно спасибо

Автор - ZamoK
Дата добавления - 29.10.2014 в 16:35
UltrasRW Дата: Среда, 29.10.2014, 16:50 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 5 ±
Замечаний: 0% ±

счеты деревянные
ZamoK, подскажите о каких столбцах идет речь? Не могу для себя понять в чем косяк - не вижу различий
 
Ответить
СообщениеZamoK, подскажите о каких столбцах идет речь? Не могу для себя понять в чем косяк - не вижу различий

Автор - UltrasRW
Дата добавления - 29.10.2014 в 16:50
ZamoK Дата: Среда, 29.10.2014, 18:45 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
подскажите о каких столбцах идет речь?

упс это косяк образца у Вас UltrasRW, тоже все правильно работает просто я не на тот лист посмотрел


Я не Гуру, но стремлюсь!
 
Ответить
Сообщение
подскажите о каких столбцах идет речь?

упс это косяк образца у Вас UltrasRW, тоже все правильно работает просто я не на тот лист посмотрел

Автор - ZamoK
Дата добавления - 29.10.2014 в 18:45
ZamoK Дата: Среда, 29.10.2014, 19:12 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
Да вот такой маленький вопрос. Процедура занимает очень длительное время в моём файле, я так думаю из-за большого количества формул на моих листак, и при подстановке данных все пересчитывается. Можно ли отключить пересчёт формул на момент подстановки данных, а по завершении пересчитать. Обновление экрана[vba]
Код
Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationAutomatic
[/vba] я уже отключил. помогло но не сильно, или это и есть пересчет формул.


Я не Гуру, но стремлюсь!
 
Ответить
СообщениеДа вот такой маленький вопрос. Процедура занимает очень длительное время в моём файле, я так думаю из-за большого количества формул на моих листак, и при подстановке данных все пересчитывается. Можно ли отключить пересчёт формул на момент подстановки данных, а по завершении пересчитать. Обновление экрана[vba]
Код
Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationAutomatic
[/vba] я уже отключил. помогло но не сильно, или это и есть пересчет формул.

Автор - ZamoK
Дата добавления - 29.10.2014 в 19:12
AndreTM Дата: Среда, 29.10.2014, 19:31 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
ОБновление экрана - это
[vba]
Код
Application.ScreenUpdationg = False | True
[/vba]но он в примерах и так уже используется.

"Очень долго" - это сколько? Час? 10 минут? Минута?
Формулы в листах у вас не должны влиять на "Свод", если в сводном листе нет формул (и на сводный лист ничего не ссылается).
Если данных всё же "очень много" (назовите хотя бы порядок) - можно вместо копирования попробовать использовать запросы к таблицам данных (+выгрузка на лист из рекордсета идёт как из массива), это будет быстрее.


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеОБновление экрана - это
[vba]
Код
Application.ScreenUpdationg = False | True
[/vba]но он в примерах и так уже используется.

"Очень долго" - это сколько? Час? 10 минут? Минута?
Формулы в листах у вас не должны влиять на "Свод", если в сводном листе нет формул (и на сводный лист ничего не ссылается).
Если данных всё же "очень много" (назовите хотя бы порядок) - можно вместо копирования попробовать использовать запросы к таблицам данных (+выгрузка на лист из рекордсета идёт как из массива), это будет быстрее.

Автор - AndreTM
Дата добавления - 29.10.2014 в 19:31
ZamoK Дата: Среда, 29.10.2014, 20:10 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
"Очень долго" - это сколько?
Это в районе 10-13 минут, т.е. нажал и можно спокойно курить идти :D может и не завершится процедура бывало и такое уже
можно вместо копирования попробовать использовать запросы к таблицам данных (+выгрузка на лист из рекордсета идёт как из массива), это будет быстрее.
О-О-У это Вы сейчас с кем разговариваете :o Если не трудно на этом примере можно реализовать?

Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationAutomatic

а это получается пересчет на каждый чих?
Вы уж меня простите ежели что-то не так я учусь записываю комадны, и потом пытаюсь их как-то применять
Формулы в листах у вас не должны влиять на "Свод", если в сводном листе нет формул (и на сводный лист ничего не ссылается).

Формулы в пошаговом режиме действительно не считают, и на свод ничего не ссылается и формул там нет. Просто Свод порядка 200-500 строк и столбцов с данными не 6 как в образце, а 26 столбцов. Получается 4600 запросов на каждый лист, а листов в книге каждый месяц разное 25-35 листов. короче за одно нажатие 140 000 запросов (как минимум) + копирование данных оно тоже тормозит процесс.


Я не Гуру, но стремлюсь!

Сообщение отредактировал ZamoK - Четверг, 30.10.2014, 08:31
 
Ответить
Сообщение
"Очень долго" - это сколько?
Это в районе 10-13 минут, т.е. нажал и можно спокойно курить идти :D может и не завершится процедура бывало и такое уже
можно вместо копирования попробовать использовать запросы к таблицам данных (+выгрузка на лист из рекордсета идёт как из массива), это будет быстрее.
О-О-У это Вы сейчас с кем разговариваете :o Если не трудно на этом примере можно реализовать?

Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationAutomatic

а это получается пересчет на каждый чих?
Вы уж меня простите ежели что-то не так я учусь записываю комадны, и потом пытаюсь их как-то применять
Формулы в листах у вас не должны влиять на "Свод", если в сводном листе нет формул (и на сводный лист ничего не ссылается).

Формулы в пошаговом режиме действительно не считают, и на свод ничего не ссылается и формул там нет. Просто Свод порядка 200-500 строк и столбцов с данными не 6 как в образце, а 26 столбцов. Получается 4600 запросов на каждый лист, а листов в книге каждый месяц разное 25-35 листов. короче за одно нажатие 140 000 запросов (как минимум) + копирование данных оно тоже тормозит процесс.

Автор - ZamoK
Дата добавления - 29.10.2014 в 20:10
ZamoK Дата: Четверг, 30.10.2014, 08:33 | Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
Да ещё вопрос: в этих примерах можно исключить ещё один лист кроме "Сбора" из обработки - например Лист20

И можно ли выводить на экран сообщение какой лист в данный момент обрабатывается т.е. если зависнет хоть знать на каком листе циклится, где копать? и вывести шкалу прогрессии процедуры


Я не Гуру, но стремлюсь!
 
Ответить
СообщениеДа ещё вопрос: в этих примерах можно исключить ещё один лист кроме "Сбора" из обработки - например Лист20

И можно ли выводить на экран сообщение какой лист в данный момент обрабатывается т.е. если зависнет хоть знать на каком листе циклится, где копать? и вывести шкалу прогрессии процедуры

Автор - ZamoK
Дата добавления - 30.10.2014 в 08:33
alex1248 Дата: Четверг, 30.10.2014, 08:47 | Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 384
Репутация: 71 ±
Замечаний: 0% ±

Excel 2007, 2010
ZamoK, добавил исключение Лист20 и сообщение о переходе к очередному листу.
Про шкалу не знаю. Если только в сообщение добавить "Уже обработано < > листов"?
По поводу отключения пересчета тоже не знаю, но почему вы сами не попробуете? Можно проверить с книгой меньшего объема, сразу видно должно быть.
К сообщению приложен файл: Excel_DB-1-112.xlsm (45.8 Kb)


skype alex12481632
Qiwi +79276708519


Сообщение отредактировал alex1248 - Четверг, 30.10.2014, 08:47
 
Ответить
СообщениеZamoK, добавил исключение Лист20 и сообщение о переходе к очередному листу.
Про шкалу не знаю. Если только в сообщение добавить "Уже обработано < > листов"?
По поводу отключения пересчета тоже не знаю, но почему вы сами не попробуете? Можно проверить с книгой меньшего объема, сразу видно должно быть.

Автор - alex1248
Дата добавления - 30.10.2014 в 08:47
UltrasRW Дата: Четверг, 30.10.2014, 10:02 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 5 ±
Замечаний: 0% ±

счеты деревянные
имхо выкидывать сообщение о переходе на другой лист не совсем оптимально, если мы изначально знаем, что в книге ~70 листов.

ZamoK, обратите внимание на строчку:
[vba]
Код
Application.StatusBar = "Обработка листа " & ws.Name
[/vba]
таким образом вы сможете видеть статус обработки (см. вложение - нет возможности загрузить на хостинг).
В статус бар обычно выкидываю для себя полезную информацию по прогрессу и т.д., в примере есть - посмотрите
К сообщению приложен файл: 3504565.xlsm (41.8 Kb) · 3620946.png (4.7 Kb)


Сообщение отредактировал UltrasRW - Четверг, 30.10.2014, 10:03
 
Ответить
Сообщениеимхо выкидывать сообщение о переходе на другой лист не совсем оптимально, если мы изначально знаем, что в книге ~70 листов.

ZamoK, обратите внимание на строчку:
[vba]
Код
Application.StatusBar = "Обработка листа " & ws.Name
[/vba]
таким образом вы сможете видеть статус обработки (см. вложение - нет возможности загрузить на хостинг).
В статус бар обычно выкидываю для себя полезную информацию по прогрессу и т.д., в примере есть - посмотрите

Автор - UltrasRW
Дата добавления - 30.10.2014 в 10:02
ZamoK Дата: Четверг, 30.10.2014, 12:40 | Сообщение № 13
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
Убрал пересчет и обновление экрана на самый конец и все стало на много быстрее
получилось так [vba]
Код
      A = A + 1
      End If
Next X

End With
   End If
   Range("C1").Select
Next ws
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
   Application.StatusBar = Null
   MsgBox "Данные заполнены!", , ""
End Sub
[/vba]
Тут бы ещё дописать чтоб по завершении был открыт лист Сбор


Я не Гуру, но стремлюсь!

Сообщение отредактировал ZamoK - Четверг, 30.10.2014, 12:44
 
Ответить
СообщениеУбрал пересчет и обновление экрана на самый конец и все стало на много быстрее
получилось так [vba]
Код
      A = A + 1
      End If
Next X

End With
   End If
   Range("C1").Select
Next ws
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
   Application.StatusBar = Null
   MsgBox "Данные заполнены!", , ""
End Sub
[/vba]
Тут бы ещё дописать чтоб по завершении был открыт лист Сбор

Автор - ZamoK
Дата добавления - 30.10.2014 в 12:40
ZamoK Дата: Четверг, 30.10.2014, 12:49 | Сообщение № 14
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
Решил так дописал [vba]
Код
Application.StatusBar = Null
shtX.Activate
  MsgBox "Данные заполнены!", , ""
End Sub
[/vba]


Я не Гуру, но стремлюсь!
 
Ответить
СообщениеРешил так дописал [vba]
Код
Application.StatusBar = Null
shtX.Activate
  MsgBox "Данные заполнены!", , ""
End Sub
[/vba]

Автор - ZamoK
Дата добавления - 30.10.2014 в 12:49
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Заполнение данными книги с одного листа (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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