Получить данные с помощью DDE в R с помощью библиотеки tcltk2 - PullRequest
0 голосов
/ 09 сентября 2018

Соединение Excel с «ABC» через Excel работает, соединение R с Excel с помощью DDE также работает, но как связать R с приложением «ABC»?

У меня есть приложение, предоставляющее интерфейс DDE, из Excel я могу извлечь значение из него с помощью этой ссылки DDE:

='ABC'|DDE!_nazwa_value

из R Я пытался использовать библиотеку tcltk2 следующим образом:

tcltk2::tk2dde.request(service="ABC", topic="DDE", item="_nazwa_value")

но возникает ошибка:

Error in structure(.External(.C_dotTcl, ...), class = "tclObj") : 
  [tcl] remote server cannot handle this command.

[1] "Error in structure(.External(.C_dotTcl, ...), class = \"tclObj\") : \n  [tcl] remote server cannot handle this command.\n\n"
attr(,"class")
[1] "try-error"
attr(,"condition")
<simpleError in structure(.External(.C_dotTcl, ...), class = "tclObj"): [tcl] remote server cannot handle this command.

Я только пытаюсь использовать функции tcltk dde для извлечения данных из приложения, я думаю, что item часть моего tk2dde.request неверна, но я пробовал различные модификации (например, без _ ), знаете ли вы какие-либо подсказки или ресурсы для решения этой проблемы?

EDIT

что-то не так. Я не вижу ни ABC-сервера, ни темы DDE в списке тем сервера: tk2dde.services(), но Excel по-прежнему может подключаться и извлекать значение, используя ='ABC'|DDE!_nazwa_value, DDE Query также не видит его

1 Ответ

0 голосов
/ 20 сентября 2018

Вы можете прочитать в статье о DDE в вики tcl / tk:

(Говоря об использовании Internet Explorer) ... Все вышеперечисленные эксперименты должны «работать» надежно, так как с точки зрения пользователя IE действительно действует так, как описано. Однако в процессе Tcl [dde] обычно выдает исключение «удаленный сервер не может обработать эту команду». Это связано с тем, что в анализе KBK DDE не дает «способа отличить» ожидаемый результат, но сервер не смог предоставить его «от« ожидаемого результата »». Единственный способ не получить DMLERR_NOTPROCESSED - это вызвать "dde exec -async ..."

Примечание: я пробовал tcl примеры DDE, используя Excel + «запрос», и я получил ту же ошибку, что и вы: «удаленный сервер не может обработать эту команду» .

Saludos!

...