Состояние фоновой работы - проблема

Программирование на Visual Basic for Applications
DDimok
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 29.06.2004 (Вт) 14:45
Откуда: Москва

Состояние фоновой работы - проблема

Сообщение DDimok » 08.02.2005 (Вт) 17:41

Привет всем. В Экселе делается макрос, который лопатит все файлы в нужном каталоге, открывает, копирует из них что-то, закрывает, ... Вобщем ДОЛГО работает. При этом не хочется, чтобы пользователь видел мигание и скакание экрана. Сделал немодальную форму, на которую вывожу что-то типа "Имя файла в обработке ...". ПРи работе делается -
Application.DisplayAlerts = False
Application.ScreenUpdating = False
В момент вывода на экран
Application.ScreenUpdating = True
и потом обратно в False.
НО .... в этой формочке в информационной строке НИЧЕГО не меняется и не отображается. Если СкринАпдате не использовать, то все хорошо отображается, но листы скачут как бешенные и это неприятно :)
Так вот - а чего я неправильно сделал ? Почему не работает ?
Заранее благодарен за Ваши соображения и информацию.
Дмитрий

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 08.02.2005 (Вт) 18:15

Здравый смысл подсказывает, что 95% всей автоматизации можно делать без переключений листов. Что тебе требуется делать?
Lasciate ogni speranza, voi ch'entrate.

DDimok
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 29.06.2004 (Вт) 14:45
Откуда: Москва

Сообщение DDimok » 08.02.2005 (Вт) 18:30

Открывается Файл1 (беда в том, что в нем куча всегод делается в Workbook_open - долго открывается). Открывается ПустойФайл. Из Файл1 копируется 3 листа в ПустойФайл. Ф1 - закрывается, ПустФайл записывается с именем Файл1. И закрывается. Сохранение требует сделать Activate на книгу, вобщем - что-то скачет, вижу на мониторе сам :)
А еще - вообще беда, даже если не отключать СкринАпдате, то он не выводит на экран никакой информации, только если вставить паузу в секунду после каждого сообщения. А интересно - а есть что-нить типа "обновить экран" ?
Дмитрий

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 08.02.2005 (Вт) 18:37

Прячь сам Excel, а прогресс показывай на пользовательской форме.
Lasciate ogni speranza, voi ch'entrate.

DDimok
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 29.06.2004 (Вт) 14:45
Откуда: Москва

Сообщение DDimok » 08.02.2005 (Вт) 18:45

Эээээ ... не понял. Это как "спрятать сам Excel" ? У меня есть WorkBook с одной кнопкой - запустить макрос. Открыватеся UserForm с одной строкой TextBox.
Для обновления - FrmMsg.TB_Msg.Text="xxxx".
А он не обновляет, да и сама форма висит оптимистично белого цвета и не фига на ней не выводится (кроме заголовка окна) :((
Ниччче не понимаю :)
Дмитрий

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 08.02.2005 (Вт) 18:51

Application.Visible = False
...
frm.Repaint
...
Application.Visible = True
Lasciate ogni speranza, voi ch'entrate.

DDimok
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 29.06.2004 (Вт) 14:45
Откуда: Москва

Сообщение DDimok » 08.02.2005 (Вт) 19:01

Уййййййяяяяяяя !!!!!!!!!!!!!! Заррработала !!!!!! :)
Спасибо нечеловеческое !!!!!!!!! :)
Достаточно было и Repaint, но при скрытом Екселе - все еще раз в 10 быстрее :)
Спасибо, alibek Большой Человек !!!!!!!!! :)
Дмитрий

echo
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 26.01.2005 (Ср) 8:25
Откуда: Хабаровск

Сообщение echo » 28.03.2005 (Пн) 4:28

DDimok
А поделись плиз кодом как ты это реализовал?
Душа болит... А лечишь её - печень болит!


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 58

    TopList