Новости:

Форум на данный момент в стадии обновления. Если у Вас возникли проблемы со входом в свою учетную запись - просьба писать на email: info@excel-vba.ru

Главное меню

Происходит зависание макроса без возможности выхода.

Автор Anders, 22.03.2025, 17:48:25

« назад - далее »

Anders

Какое-то время назад (около года, наверное) моя большая программа с вызовом нескольких подпрограмм вдруг стала зависать непредсказуемым образом.
Ситуации следующие:
1. Делаю обращение к данным с какого-то сайта для последующего парсинга. При этом зависает в момент формирования страницы по команде
browser.navigate pageaddr
При этом попытка установить таймер на время обработки не всегда помогает. Будто бы прямо сразу зависает.
2. Другая ситуация. В программе при изменении кода появляется ошибка. При появлении ошибки возникает окошко с текстом ошибки, но нет возможности перейти к дебагу, т.к. программа уже зависла.
3. Нахожусь в редакторе VBE. Может и при этом произойти зависание.

При этом комп начинает тарахтеть, отжирая для Excel от 20 до 30% ресурсов ЦП.
Во всех этих случаях единственный способ - остановка приложения через диспетчер задач с последующим перезапуском. Во 2-м случае обычно появляется возможность всё-таки после перезагрузки добраться до окна отладки. Но не надолго. При этом приходится почти после каждого исправления программы делать save.
Сразу скажу, что ресурс программа отжирает прилично из-за больших многомерных массивов и больших загружаемых файлов с данными (больше 100Мб - 50000 строк на 1000 столбцов).

Пытаюсь понять, в какую сторону двигаться для решения ситуации: сокращение размера файлов или какие-то настройки могут помочь?

kosteg

Если раньше всё было хорошо, то, может, дело не в программе, а в каких-то обновлениях ОС или офиса. Как вариант - откатить обновления винды и офиса до даты начала проблем, посмотреть, что будет.

Дмитрий Щербаков(The_Prist)

Без примера кода вообще говорить особо не о чем.
browser.navigate pageaddr - может зависать, например, если страница содержит скрипты и для их дальнейшего выполнения необходимо дать на это разрешение во всплывающем окне(которое, конечно же, не видно при запуске из VBA). Это можно проверить, вбив адрес страницы в IE(или Edge).
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

Яндекс.Метрика Рейтинг@Mail.ru