#excel #vba #scheduled-tasks
#excel #vba #запланированные задачи
Вопрос:
Я просто понимаю, что у меня есть два макроса на двух разных листах Excel, которые запланированы для запуска в определенное время в течение дня. Они перекрываются в 11: 30 и предназначены для отслеживания рыночных событий в это время. Одна из них будет запущена примерно через 10 секунд, в то время как выполнение другой может занять около 1 минуты. Обе содержат какое-то копирование и вставку. Важно, чтобы я получал информацию точно в 11: 30, поэтому задержка не была бы идеальной.
Один из макросов запланирован через приложение.Ontime, а другая является частью функции worksheet.calculate.
Мне было интересно, как VBA обрабатывает это? Будет ли он запускать макрос до конца, а затем запускать второй, или он попытается запустить одновременно, что приведет к некорректной работе копирования / вставки.
Комментарии:
1. VBA однопоточный, поэтому он не будет запускать их одновременно
2. Ок, круто — есть идеи, как определить, какая из них запускается первой?
3. Ваш вопрос не очень ясен. Вы говорите о двух запланированных функциях в названии вопроса, но затем говорите «Один из макросов запланирован через приложение. Ontime, а другая является частью worksheet.calculate function » — что предполагает, что запланирована только одна из двух функций (триггер другой не указан). По умолчанию
Application.OnTime
процедура будет выполняться по расписанию — или как только сможет (как только Excel перейдет в режим готовности).4. Извините — Вторая функция также всегда будет запускаться в 11: 30.
5. @rickmanalexander в то время как C # или VB.NET предоставляйте фреймворк для многопоточности, параллельный доступ к COM-объектам будет отбрасываться
COMException
влево и вправо. COM и .NET имеют совершенно разные модели потоков, поэтому потоки .NET необходимо синхронизировать.net. Итак, .NET может выполнять MT, но взаимодействие .NET / COM MT = проблема.