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

Вход

Регистрация

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

 

= Мир MS Excel/Деактивация окна Excel - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Деактивация окна Excel
ddp1481ne Дата: Воскресенье, 09.02.2025, 23:23 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

2013
Добрый день!

Задался целью останавливать работающий макрос при переходе с конкретного листа и возврате на него. Сделал почти всё - макрос запускается при открытии файла, останавливается при переходе на другой лист/другую книгу и запускается при возврате на этот лист, не грузит процессор. Осталась одна нерешённая проблема - как заставить срабатывать события книги Workbook_Activate и Workbook_Deactivate при переходе на другое приложение и возврате к Excel т.к. они срабатывают только при переключении между книгами?

Останов макроса при переходе на стороннее приложение сделал с помощью API GetFocus (любое стороннее приложение = 0).

Вопрос: Какая команда/API сможет вызвать событие Deactivate окна Excel?

Declare Function GetCursorPos Lib "user32.dll" (ByRef lpPoint As POINTAPI) As Long
...
If GetFocus() = 0 Then

'??? Деактивация Excel ???

End If
...

Форумы читал, Google спрашивал, даже OpenAi мне не помог. :D

Для примера взял файл от ZVI минимально его изменив.
К сообщению приложен файл: 65496461651.xls (58.5 Kb)
 
Ответить
СообщениеДобрый день!

Задался целью останавливать работающий макрос при переходе с конкретного листа и возврате на него. Сделал почти всё - макрос запускается при открытии файла, останавливается при переходе на другой лист/другую книгу и запускается при возврате на этот лист, не грузит процессор. Осталась одна нерешённая проблема - как заставить срабатывать события книги Workbook_Activate и Workbook_Deactivate при переходе на другое приложение и возврате к Excel т.к. они срабатывают только при переключении между книгами?

Останов макроса при переходе на стороннее приложение сделал с помощью API GetFocus (любое стороннее приложение = 0).

Вопрос: Какая команда/API сможет вызвать событие Deactivate окна Excel?

Declare Function GetCursorPos Lib "user32.dll" (ByRef lpPoint As POINTAPI) As Long
...
If GetFocus() = 0 Then

'??? Деактивация Excel ???

End If
...

Форумы читал, Google спрашивал, даже OpenAi мне не помог. :D

Для примера взял файл от ZVI минимально его изменив.

Автор - ddp1481ne
Дата добавления - 09.02.2025 в 23:23
ddp1481ne Дата: Пятница, 14.02.2025, 11:45 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

2013
Методом проб и ошибок проблему решил.

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

Макрос запускается при открытии книги. Запущенный макрос останавливается при переключении на другое приложение/книгу и запускается при возврате на исходную книгу.

Проблему с постоянной загрузкой потока процессора решил с помощью Sleep. Не совсем понял почему но субъективно время отклика наименьшее у такой конструкции:
DoEvents
Sleep 1 ' Задержка
DoEvents
Можно задержку установить и больше, но мне нужно было минимальное время отклика для реализации вызова всплывающих окон в своём проекте.

Пример основан на файле от ZVI.
К сообщению приложен файл: ddp1481ne.xls (90.0 Kb)


Сообщение отредактировал ddp1481ne - Пятница, 14.02.2025, 11:47
 
Ответить
СообщениеМетодом проб и ошибок проблему решил.

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

Макрос запускается при открытии книги. Запущенный макрос останавливается при переключении на другое приложение/книгу и запускается при возврате на исходную книгу.

Проблему с постоянной загрузкой потока процессора решил с помощью Sleep. Не совсем понял почему но субъективно время отклика наименьшее у такой конструкции:
DoEvents
Sleep 1 ' Задержка
DoEvents
Можно задержку установить и больше, но мне нужно было минимальное время отклика для реализации вызова всплывающих окон в своём проекте.

Пример основан на файле от ZVI.

Автор - ddp1481ne
Дата добавления - 14.02.2025 в 11:45
  • Страница 1 из 1
  • 1
Поиск:

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