Автоматизация экспорта скриншотов Bloomberg DDE

В настоящее время я пытаюсь автоматизировать снимки экрана с терминала Bloomberg с помощью DDE в VBA. В настоящее время я придумал способ автоматического извлечения снимков экрана путем «печати» через Microsoft XPS Document Writer:

Dim ch As Variant
Dim CUSIP As String
CUSIP = Range("B12")

ch = DDEInitiate("winblp", "bbk")
Call DDEExecute(ch, "<blp-1>" & CUSIP & " mtge<GO>")
Call DDEExecute(ch, "<blp-1> DES<Go><print>")
Application.Wait Now + TimeValue("0:00:02")
Application.SendKeys "DES ", False
Application.SendKeys "{enter}", False

Call DDETerminate(ch)  

Код работает нормально при первом запуске, но при каждом последующем разработчик вылетает из строя. Будем признательны за любые отзывы или дополнительные предложения. Спасибо!


person user3813682    schedule 07.07.2014    source источник
comment
Интересный. Можете ли вы определить, какая строка выполняется правильно до сбоя? Это может помочь изолировать проблему. Возможно, связанная с этим заметка: я обнаружил, что SendKeys иногда ненадежны, но это может не иметь никакого отношения к этому сообщению.   -  person hnk    schedule 08.07.2014
comment
Я читал где-то на форумах, что после первоначального запуска DDE ссылка на канал DDE все еще открыта. Строка DDEInitiate вызывает зависание экрана Excel после первого запуска.   -  person user3813682    schedule 09.07.2014
comment
Кроме того, мне тоже не нравится использовать sendkeys, но я пробовал несколько обходных путей для экспорта экрана Bloomberg в файл изображения и потерпел неудачу. Несмотря на недостатки, этот метод до сих пор давал наилучшие результаты.   -  person user3813682    schedule 09.07.2014


Ответы (1)


Возможно, слишком поздно, но это может помочь кому-то, так как мне тоже приходилось это делать. Вы можете просто использовать команду <copy> в вызовах DDE и вставить ее в Word/Excel/Outlook без использования ключей отправки:

Call DDEExecute(ch, "<blp-1> <copy>")
person markben151    schedule 02.10.2014