Страницы: 1
RSS
Заставка загрузки во время выполнения макроса, не статусбар
 
Есть желание видеть какую-нибудь анимацию во время выполнения макроса (30сек-2мин)
мысли следующие:
1. через WebBrowser открывать gif - анимированную картинку  (мне не понравилось, что картинку нужно "таскать" рядом с файлом и с размерами пока не разбирался. Еще в голове вариант сохранить ее на лист в книге, а при необходимости сначала "вытаскивать" в папку как картинку, потом уже загружать через браузер, и перед закрытием удалять)
2. вставить статичное изображение фоном в юзерформу, и там вращать. как я понял - два макроса одновременно делать нельзя, но можно по одному в каждой книге, соответственно необходимо программно создать вторую книгу с макросом и формой, и пока выполняется макрос в первой книге, показывать "анимацию" второй
Как думаете, реально или замудрил?
В интернете нашел достаточно подобного рода пожеланий, но ни одной более менее дельной реализации.
я взялся, значит сделаю. Результат обещаю скинуть
Помогли? отпишись, а то мы же волнуемся )))
 
Цитата
guzen_pilot написал:
не статусбар
А прогрессбар? ))
 
Может лучше изменить код чтоб отрабатывал за секунду-две?
Но можно изменить код чтоб крутил что-то на форме.
 
Цитата
реально или замудрил
и то, и другое)

Цитата
но ни одной более менее дельной реализации
да потому что эти украшательства нормальным программам нафиг не нужны
вот представьте, - протянули вы формулу на несколько ячеек, - тут Excel формулы начинает пересчитывать, а у вас на экране юзерформа показывается с крутящейся картинкой...
через несколько дней вы возненавидели бы эти все свистелки и перделки, не несущие полезной нагрузки

PS: прогресс-бар можно найти здесь
http://excelvba.ru/tools/ProgressIndicator

PPS: поддерживаю совет Hugo по оптимизации кода
обычно проще сделать так, чтобы код выполнялся за долю секунды
 
Цитата
свистелки и перделки
у себя я их использую там где он выполняется долго по времени и редко по частоте, оптимизировать по ряду причин не представляется возможным, в частности, конечный пользователь - максимум формулу суммы может сделать (и поверьте - это уже достижение), ну и приходится "наворачивать" код так, чтобы предусмотреть по максимуму, чтобы эти ребята не "наворотили делов", так например стандартная ситуация: абсолютно все расчеты на скрытых листах, а конечный результат уже кодом заполняю, а в какие ячейки этот результат будет попадать меняется по 5 раз на неделю..... сделал страницу настроек: какие данные в какие столбики/ячейки забивать, чтоб в код постоянно не лазить. Ну а теперь сами судите, во сколько раз такие макросы дольше делаются, главное их устраивает, и мне так спокойнее.
Цитата
да потому что эти украшательства нормальным программам нафиг не нужны
согласен, но то, о чем я говорю, вполне оправдано
Цитата
А прогрессбар?
да, я ошибся, уже делал,но не нравится он мне, да и с картинками хочется разобраться, чисто из спортивного интереса :)
Изменено: guzen_pilot - 16.04.2016 01:27:34
Помогли? отпишись, а то мы же волнуемся )))
 
я вот кокраз хотел предложить форму которую я видел в одной из настроек  Игорь, но он сам выложил её код.

по мене вычисления не точны, и лучше использовать атрибут маусикон. а поскольку эксель сам по себе этот атрибут меняете (когда макросы долго работают в определенных областях иконка мыши меняется) , то и заморачиваться с этим не стоит.

Да простого пользователя нервирует бездействие на экране, но для этого можно выдать простую форму с текстом, "Ожидайте скоро разродимся" а в конце долгой процедуры закрытие этой формы.
у меня простая версия Экселя, в ней нет кнопки "Прочитать мысли и сгенерировать файл пример"
 
Цитата
Фродо написал:  "Ожидайте скоро разродимся"
- можно в процессе на определённых этапах менять на "уже почти рожаю", "совсем рожаю", "считай уже родила".
 
Цитата
Hugo написал:
"считай уже родила"
или родил, чтоб не как у всех - с изюминкой)
Цитата
guzen_pilot написал:
оптимизировать по ряду причин не представляется возможным
сомнительное утверждение.
сужу по своему опыту - "перделки и свистелки" пробовал вставлять в свои проекты на начальном этапе изучения VBA.
тогда действительно многие, элементарные даже, вещи занимали много времени.
почему то даже почти уверен что в вашем коде есть ненужные Select и лишние действия)
могу конечно ошибаться, но тогда у вас должен быть мега-файл, чтобы тратить столько времени на вычисления.
Изменено: Dima S - 16.04.2016 16:15:42
 
Цитата
Dima S написал:
почти уверен что в вашем коде есть ненужные Select
упаси господь, я конечно к профессиональному программированию не имею отношения, но от Select и еже с ним, уже давно отошел. Из явных грехов для себя - еще не пользую массивы в циклах, пока в лоб, через прямое обращение к ячейкам, но думаю в скором времени и с этим разберусь.
Помогли? отпишись, а то мы же волнуемся )))
 
На самой форме вращать фигуру вряд ли получится: придётся иметь на диске множество рисунков с различным углом поворота и подставлять их поочерёдно на форму. Но это значительно замедлит выполнение макроса. Может быть вращать фигуру на листе?  
 
Вариант.
 
Юрий, спасибо  :) но..... Мы говорим о намного!!!!! более сложных вещах. У меня один файл .xlsm (как основа), создает свою копию в .xlsx, потом открывает третий файл в .xlsx, и начинает перенос кучи данных с 3-го в копию, все это через циклы и поиск по названиям....... да еще и с периодическими вплываниями msgBox....... и я хочу во время выполнения всего этого безобразия видеть какую-нибудь  "свистельку/пердельку". Один только Application.ScreenUpdating = False делает невозможным вращение в этом файле, почему речь и пошла о еще одном файле и параллельно выполняющихся макросах
Помогли? отпишись, а то мы же волнуемся )))
 
Цитата
guzen_pilot написал:
потом открывает третий файл в .xlsx, и начинает перенос кучи данных с 3-го в копию, все это через циклы и поиск по названиям
а может лучше сделать копию "3-го" и удалить ненужное, вместо того чтобы ганять это все?
 
Цитата
guzen_pilot написал: Мы говорим о намного!!!!! более сложных вещах.
Ну куда уж мне ))
 
Цитата
Dima S написал: а может лучше сделать копию "3-го" и удалить ненужное, вместо того чтобы ганять это все?
первый - файл с новой структурой (как обновление)
третий  - предыдущая версия, но там уже заполнены данные
в моем случае проще вытащить данные из первого
копия - потому, что файл (обновление) нужен как многоразовый, и без макросов
Цитата
Юрий М написал: Ну куда уж мне ))
не о вас лично, а о вашем примере!!! Я никого не хочу оскорбить
Помогли? отпишись, а то мы же волнуемся )))
 
Да я и не обиделся  :)  Просто показал возможный вариант. Ведь с формой будут проблемы (писал выше).
 
Цитата
guzen_pilot написал:
У меня один файл .xlsm (как основа), создает свою копию в .xlsx, потом открывает третий файл в .xlsx, и начинает перенос кучи данных с 3-го в копию, все это через циклы и поиск по названиям....... да еще и с периодическими вплываниями msgBox.......
Жаль Ваших преемников, однако!
А если Вас трамвай переедет?!
А тут еще изыски с "вертушками"!  :D
 
Цитата
Мотя написал: А если Вас трамвай переедет?!
тьфу, тьфу... а так я по 90% времени трачу на "защиту от дураков" - все должно работать  :)
Цитата
Юрий М написал: с формой будут проблемы
вращение в форме еще не смотрел, сейчас пытаюсь вращать на новом листе, соответственно - заставить работать 2 макроса одновременно, пока глухо  :evil:
Помогли? отпишись, а то мы же волнуемся )))
 
Цитата
guzen_pilot написал: я по 90% времени трачу на "защиту от дураков"
В таком разе настало время напрочь заменить алгоритм задачи.  :D
 
Цитата
еще не пользую массивы в циклах, пока в лоб, через прямое обращение к ячейкам
переход на массивы (и вообще, качественный код) даст прирост в скорости в 100-1000 раз
и весь ваш код начнёт выполняться менее чем за секунду

Цитата
сейчас пытаюсь вращать на новом листе
лучше постарайтесь избавиться от обращения к ячейкам в цикле
обращений к листу должно быть 2: 1 раз - это чтение массива с листа, 2 раз - вывод массива на лист
 
Цитата
отя написал: настало время напрочь заменить алгоритм задачи.  
не брать дураков на высокоинтеллектуальную работу :D ... чтобы всю жизнь не  предупреждать их ошибки...
Изменено: JeyCi - 17.04.2016 07:41:35
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
JeyCi написал:
не брать дураков на высокоинтеллектуальную работу
Дабы не обидеть автора темы, возомнившего себя генератором идей автоматизации, напомню одну непреложную истину: программированию и козу научить можно, алгоритмизация козе не доступна.  :D
Страницы: 1
Читают тему
Наверх
Loading...