Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / EXCEL | WebBrowser | .gif / 8 сообщений из 8, страница 1 из 1
29.10.2018, 14:39
    #39724525
Yagrus2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXCEL | WebBrowser | .gif
Hello world!
Есть макрос, который запускается по клику кнопки. Выполняется он порядка 20 секунд.
Пока идут вычисления, пользователю должна выводиться форма с динамическим изображением в формате GIF (песочные часы).
Для этого использую WebBrowser, который динамически добавляю на форму.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Private Sub btnMainCalc_Click()

Application.ScreenUpdating = False
Application.Cursor = xlWait
    ' Путь на динамическую картинку (песочные часы)
    mygif = ThisWorkbook.Path & "\mygif.gif"
    ' Установка размера формы
    frmHourglass.Height = 127
    frmHourglass.Width = 117
    
    Dim MyWebBrowser As WebBrowser
    Set MyWebBrowser = frmHourglass.Controls.Add("Shell.Explorer.2", "Gif")
    MyWebBrowser.Navigate2 mygif
    MyWebBrowser.Height = 177
    MyWebBrowser.Width = 177
        
    frmHourglass.Show vbModeless
        Call mainSub
    Unload frmHourglass
    
Application.Cursor = xlDefault
Application.ScreenUpdating = True
    
End Sub

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

Если проводить запуск через кнопку F8, то описанной выше проблемы нет.
Подскажите, как это побороть?
...
Рейтинг: 0 / 0
29.10.2018, 19:53
    #39724707
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXCEL | WebBrowser | .gif
Yagrus2,

Со статическим контролом всё ок. Вам точно нужно на лету создавать web browser ?
...
Рейтинг: 0 / 0
30.10.2018, 11:41
    #39724866
Yagrus2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXCEL | WebBrowser | .gif
big-duke,
Это потому, что ваш код показывает только форму.
Попробуйте вот так
Код: vbnet
1.
2.
3.
4.
5.
frmHourglass.Show vbModeless
        For i = 1 To 1000000000
            x = i
        Next
    Unload frmHourglass


Сначала просто запустите. Вместо gif-изображения у вас будет белый фон.

Потом, на строке с for поставьте прерывание и запустите еще раз.
Отобразится форма с gif-изображением. Песочные часы будут крутиться.
Если возобновить выполнение, песочные часы заморозятся.
...
Рейтинг: 0 / 0
30.10.2018, 12:53
    #39724902
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXCEL | WebBrowser | .gif
Yagrus2Выполняется он порядка 20 секундМожет код оптимизировать, чтобы выполнялся за 2 секунды? Тогда и анимация не понадобится, Application.Cursor = xlWait достаточно будет.

Yagrus2Попробуйте вот такВставьте в цикл DoEvents. Не при каждом проходе цикла, например
Код: vbnet
1.
if i mod 1000 = 0 then doevents
...
Рейтинг: 0 / 0
30.10.2018, 17:06
    #39725111
Yagrus2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXCEL | WebBrowser | .gif
Казанский,
Спасибо за ваш комментарий.

Получается, Gif-изображение проигрывается операционной системой.
Чтобы ОС проигрывала Gif-изображение, нужно сообщить ей об этом.
Но так как EXCEL работает в один поток, нужные мне события передаются в момент окончания работы скрипта.

В реальной программе такого цикла нет. Поэтому решение с DoEvents мне не подойдет.
Также оно сильно увеличивает время выполнения расчетов. Даже при
Код: vbnet
1.
i mod 1000

это заметно.

Итого, вариант с DoEvents нам не подошел, а другого нет.
...
Рейтинг: 0 / 0
30.10.2018, 18:47
    #39725209
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXCEL | WebBrowser | .gif
Yagrus2,

а не пробовали вместе с DoEvents использовать frmHourglass.Rapaint ?
...
Рейтинг: 0 / 0
30.10.2018, 19:33
    #39725228
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXCEL | WebBrowser | .gif
Yagrus2,

А почему не используете Application.Cursor=xlWait ?
...
Рейтинг: 0 / 0
31.10.2018, 17:29
    #39726043
Yagrus2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXCEL | WebBrowser | .gif
The_Prist,

пробовал. не помогает
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / EXCEL | WebBrowser | .gif / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]