|
Программное прерывание вывода данных по DDE в Excel
|
|||
---|---|---|---|
#18+
У меня в Excel ( на лист рабочей книги) выводятся данные по DDE из таблицы другого приложения ( не Excel)...Далее я это все обрабатываю с помощью кода написанного на VBA. На время обработки кода ( это миллисекунды) есть необходимость программным образом приостановить на короткое время вывод данных по DDE а потом опять запустить - чтобы данные на какое время не выводились на лист. Т.е. какое время DDE сервер будет накапливать эти данные в буфере ( не теряя) до тех пор пока вывод не будет разрешен опять. Поясню - похожий процесс можно наблюдать когда пытаешься редактировать данный лист - точнее ячейку листа ( куда выводятся данные по DDE) - тогда вывод данных по DDE приостанавливается до тех пор пока будет закончено редактирование листа. Или еще - нажимаешь правой клавишей мыши на любую ячейку данного листа - вывод приостанавливается тоже, отпускаешь - вывод данных продолжен...Конечно можно, наверно, сделать эмуляцию этих действий в программном коде но это на мой взгляд достаточно неэффективно и опять таки не очень быстро. Хотелось бы узнать более краткий и эффективный метод такого прерывания..Средствами VBA Excel это сделать не удается... Может кто-то знает - возможно ли включить определенный скрипт на VBS в программный код VBA, который бы сначала приостанавливал вывод DDE ( в начале выполнения процедуры) а в конце - разрешал ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2015, 23:26 |
|
Программное прерывание вывода данных по DDE в Excel
|
|||
---|---|---|---|
#18+
aligernoприостанавливал вывод DDE Это навряд ли. Можно просто остановить DDE, а потом запустить его снова, но при этом установленные соединения будут разорваны. Если клиент имеет способность переподключения/восстановления соединения, такой вариант приемлем, что, правда, тоже маловероятно. Как альтернативный вариант - реализовывать некий старт/стоп через флаг приема. Например, данные принятые по DDE поступают в ячейку A1 листа Лист1 . На листе Лист2 в ячейке A1 в зависимости от выставленного флага будет отображаться либо текущее значение Лист1!A1, либо предыдущее (сохраненное состояние). Но исходя из aligernoDDE сервер будет накапливать эти данные в буфере ( не теряя) до тех пор пока вывод не будет разрешен опять. необходимо буферизировать принятые данные, и обрабатывать их уже не с листа, а именно из этого буфера. ЗЫ: Это "другое приложение" твоё? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2015, 09:35 |
|
|
start [/forum/topic.php?fid=61&msg=39077044&tid=2173322]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 131ms |
0 / 0 |