Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2013, 10:41   #1
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию Макрос-оповещение

Добрый день, уважаемые форумчане!
Опишу ситуацию. Есть файл, в котором ряд макросов срабатывает либо по времени, либо с периодичностью. Иногда зависает на выполнении какого-либо из них. Конечно, борюсь с этим, но до конца не поборол.
Так вот, вопрос в следующем: Как можно организовать оповещение, допустим по почте или отправкой смс, в случае, если файл (макрос) завис? Интересует не код, а алгоритм. С обратной ситуацией, когда макрос сработал и оповещение ушло, все понятно. А вот при зависании - не могу сообразить.
Буду благодарен любому совету. Заранее спасибо!
strannick вне форума Ответить с цитированием
Старый 29.05.2013, 10:51   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Зависания разные бывают... все не предусмотришь.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 29.05.2013, 11:06   #3
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
Зависания разные бывают... все не предусмотришь.
Хотя бы в варианте, когда макрос вываливается в debag.
strannick вне форума Ответить с цитированием
Старый 29.05.2013, 11:08   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

алгоритм простой:
сообщение на старте: стартовал макрос, время
сообщение на финише: отработал макрос, время

если в почте "стартовал" есть, а парного "отработал" нету - висит Ваш макрос, надо тщательно дорабатывать код напильником...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 29.05.2013, 11:14   #5
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Хотя бы в варианте, когда макрос вываливается в debag.
Код:
On Error GoTo
вполне Вам поможет...
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 29.05.2013, 11:14   #6
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

сорри, дубль...
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 29.05.2013, 11:25   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Я думаю так - если висит макрос, то другой макрос не поможет, тут нет мультизадачности.
А вот сочинить какойнить внешний скрипт/exe, который запустить при старте макроса, и который будет периодически проверять результат работы макроса (например внешний текстовый файл) можно.
Например раз в 5/10/15 секунд проверяет текст и ищет в нём метки - каждый раз метка должна увеличиваться. Если файла нет или метка зависла - значит висит.

А on error может не наступить - например что-то там зациклится, или вообще эксель вылетит...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 29.05.2013, 12:25   #8
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
А on error может не наступить - например что-то там зациклится, или вообще эксель вылетит...
я уже об этом говорил: #2
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 29.05.2013, 13:03   #9
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
алгоритм простой:
сообщение на старте: стартовал макрос, время
сообщение на финише: отработал макрос, время

если в почте "стартовал" есть, а парного "отработал" нету - висит Ваш макрос, надо тщательно дорабатывать код напильником...
Да, тут можно было бы отправлять сообщение просто по завершении работы макроса "отработал макрос, время". Если отработал, то сообщение поступило. Если нет (завис), то и сообщения нет. Этот вариант я продумывал и в процедуру прописывал, тут сложностей нет. Самый часто используемый макрос срабатывает раз в 20 мин. Вот по его срабатыванию и можно было бы.
Но, хотелось бы как раз наоборот, чтобы сообщения отсылались не когда отработал, а когда Не отработал. Вот наверное как DiemonStar писал: Если On Error GoTo "отправить сообщение", Если не On Error, то по обычной процедуре.
strannick вне форума Ответить с цитированием
Старый 29.05.2013, 13:20   #10
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Сообщение от strannick Посмотреть сообщение
Но, хотелось бы как раз наоборот, чтобы сообщения отсылались не когда отработал, а когда Не отработал. Вот наверное как DiemonStar писал: Если On Error GoTo "отправить сообщение", Если не On Error, то по обычной процедуре.
Как правильно заметил Hugo121, в случае бесконечной рекурсии или зависания офиса этот вариант не поможет.

Могу предложить другой способ: вести лог запуска процедур в текстовом файле (процедура запущена[время] и процедура завершена[время]), а для проверки использовать стороннюю программку, периодически проверяющую логи процедур на завершение через определенный интервал. Остальные способы так или иначе будут не срабатывать в ряде случаев.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оповещение пользователей по локальной сети Swatch Microsoft Office Access 9 08.06.2014 19:27
Передача файлов по сети (оповещение о входящем файле) Makar_79 Работа с сетью в Delphi 2 17.05.2013 16:39
Оповещение 29 числа каждого месяца pnz_punisher Общие вопросы Delphi 6 13.09.2010 20:23
Выключить оповещение о ошибках Вавел из ГМТУ Общие вопросы Delphi 8 26.06.2009 13:20
Как поставить оповещение в Access? xruss Microsoft Office Access 11 05.12.2008 10:27