Excel VBA зависает на DDEInitiate () - PullRequest
1 голос
/ 28 апреля 2020

У меня есть следующий код в VBA для подключения к терминалу Bloomberg:

Dim Blp As Long
Blp = DDEInitiate("Winblp", "bbk")

Call DDEExecute(Blp, "<Blp-1>" & "NAPMPMI" & "<INDEX>" & " DES<GO>")

Call DDETerminate(Blp)

Каждый раз, когда Excel зависает в части DDEInitiate (), и он работает только после перезагрузки компьютера или выхода из системы и повторного входа login.

Я попробовал следующее, и они не смогли решить эту проблему:

1). Отключите некоторые надстройки для Excel и COM. Я обнаружил, что активированные надстройки одинаковы, когда DDEInitiate работает и когда он перестает работать. Так что это не надстройки для Excel / COM, которые блокируют запуск DDEInitiate.

2). Убейте все каналы в начале кода, выполнив:

Dim i, ChannelNumber As Integer
For i = 1 To 1000
    Application.DDETerminate (i) ' Closes all DDE links whose channels might be open
Next i

Что еще можно попробовать, и есть ли альтернативы DDE, которые могли бы отправлять подобные команды в bloomberg?

...