Реализация функции Time-Out в VBA на случай, если код застрянет - PullRequest
0 голосов
/ 08 октября 2018

В настоящее время я использую VBA для автоматизации извлечения больших массивов данных.Тем не менее, часто случается, что либо

  1. подчиненный просто застревает и больше не обновляется / разрывает соединение (приложение все еще реагирует), либо
  2. приложение перестает отвечать на запросы.

Есть ли способ реализовать функцию тайм-аута, которая автоматически закрывает приложение по истечении, скажем, 15 минут?

В других языках программирования я бы решил это, используя многопоточность,Но не уверен, возможно ли что-то подобное в VBA, учитывая, что оно полностью однопоточное.

Основной алгоритм, который я использовал для автоматизации данных, выглядит следующим образом:

Sub automateFetchData()
Dim requestTable As Workbook

Set requestTable = Workbooks.Open(requestTablePath)
Run ("'" & requestTable.Name & "'" & "!fetchData")
' This is where the application starts fetching data and occasionally gets stuck
debug.print "Data retrieval complete"


End Sub

Для знакомыхс Thomson Reuters Datastream я использую таблицы запросов и предварительно запрограммированный макрос в файле таблицы запросов для подключения и извлечения данных с сервера потоков данных.Поэтому, к сожалению, я не знаю / не понимаю в деталях, что происходит, когда я запускаю:

Run ("'" & requestTable.Name & "'" & "!fetchData")

Я просто знаю, что когда я его вызываю, индикатор выполнения выглядит так: enter image description here

Который затем переходит к: enter image description here

Если получение данных прошло успешно, индикатор выполнения исчезает, вывод вставляется в лист и кодвыше достигает

debug.print "Data retrieval complete"

заявление.

Если это не удастся, он просто зависает с индикатором выполнения со второго снимка экрана, который все еще открыт и работает.На этом этапе я бы хотел, чтобы тайм-аут включился и вышел из функции, которая вызвала

Run ("'" & requestTable.Name & "'" & "!fetchData")

Пожалуйста, извините меня за столь расплывчатое описание проблемы.Я был бы рад, если бы кто-то все же мог помочь мне!Всегда рад поделиться дополнительной информацией, где я могу.Ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...