Bloomberg останавливает приложение VBA.

У меня есть следующая подпрограмма VBA, которая вызывает себя каждую секунду:

Public Sub AllTheTime()
    iTimerSet = Now + TimeValue("00:00:01")
    Call runMyFunction
    Application.OnTime iTimerSet, "AllTheTime"
End Sub

Этот скрипт работает отлично: он вспоминает себя каждую секунду и что-то вычисляет.

Но когда я устанавливаю надстройку Bloomberg Office (лента Bloomberg), она больше не работает: она запускается ровно один раз, а затем останавливается. Я проверил это с помощью Debug.Print. Похоже, Bloomberg останавливает метод Application.OnTime.

У вас есть идеи, что вызывает такое поведение?


person Ben    schedule 29.09.2020    source источник
comment
Возможно ли, что надстройка использует то же имя переменной?   -  person Mech    schedule 29.09.2020
comment
@Mech Проблема не в этом. Я очень странным образом переименовал все переменные и имена функций. Но проблема все еще существует.   -  person Ben    schedule 01.10.2020
comment
Надстройка Bloomberg Office не всегда подходит для других операций в Excel. Что на самом деле делает runMyFunction? Если runMyFunction по какой-то причине вылетает, вы не попадете в вызов OnTime (). Предложите вам поставить точку останова в runMyFunction и посмотреть, подходит ли она к концу. Кроме того, я не уверен, что произойдет, если runMyFunction займет более 1 секунды (в этом случае ваш таймер установлен на прошлое)?   -  person DS_London    schedule 01.10.2020
comment
Runmyfunction Циклы через 10000 ячеек. Без BB AddOn все работало отлично. Это никогда не занимало больше 1 секунды. На всякий случай, если это заняло больше 1 секунды. Что мне делать в таком случае?   -  person Ben    schedule 01.10.2020
comment
@Ben просто поставьте iTimerSet = Now + TimeValue("00:00:01") после, когда вы звоните runMyFunction.   -  person assylias    schedule 02.10.2020
comment
Это все еще не работает. @assylias: Ставлю после runMyFunction. Тем не менее, код запускается ровно ОДИН раз. Application.OnTime iTimerSet, AllTheTime не работает с активным дополнением Bloomberg. Любые идеи?   -  person Ben    schedule 18.11.2020
comment
@Ben Я не уверен - я обычно избегаю использования этого подхода (взаимодействия с формулами bloomberg из VBA), поскольку он довольно хрупкий. Более надежно использовать COM v3 VBA API.   -  person assylias    schedule 18.11.2020
comment
Я сейчас не использую ни одной формулы Блумберга. Я запускаю свой сценарий без использования функций Bloomberg. Как только я устанавливаю надстройку Bloomberg, мой скрипт перестает работать. Но я ничего не менял.   -  person Ben    schedule 18.11.2020
comment
Bloomberg опубликовал обновление для своего API Excel 21 сентября 2020 г. Оно также нарушало вызов Application.OnTime во всех случаях, которые я рассмотрел.   -  person feetwet    schedule 08.01.2021
comment
Возможно, надстройка Bloomberg перезаписывает функцию OnTime?   -  person MacroMarc    schedule 08.01.2021