Настройка и использование функции RTD в Excel

Сводка

Примечание.

Производительность функции RealTimeData (RTD) значительно повышена в Excel M365 версии 2002 или более поздней. Дополнительные сведения см. в статье Улучшения производительности и ограничений Excel.

В этой статье описаны функциональные возможности, предоставляемые функцией RealTimeData (RTD). Microsoft Office Excel предоставляет функцию листа RealTimeData (RTD). Эта функция позволяет вызывать com-сервер автоматизации для получения данных в режиме реального времени.

При создании книги, содержащей данные, обновляемые в режиме реального времени, например финансовые или научные данные, теперь можно использовать функцию листа RTD. В более ранних версиях Excel для этой цели использовался динамический обмен данными (DDE). Функция RTD основана на технологии COM и обеспечивает преимущества надежности, надежности и удобства. RTD зависит от доступности сервера RTD, чтобы сделать данные в режиме реального времени доступными excel. Дополнительные сведения о создании сервера RTD см. в разделе "Ссылки".

Функция RTD извлекает данные с сервера RTD для использования в книге. Результат функции обновляется всякий раз, когда новые данные становятся доступными с сервера и книга может принять их. Сервер ожидает, пока Excel не будет простаивать перед обновлением. Это избавляет разработчика от необходимости определять, доступен ли Excel для приема обновлений. Функция RTD отличается от других функций в этом отношении тем, что другие функции обновляются только при пересчете листа.

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

Синтаксис

Функция RTD использует следующий синтаксис.

=RTD(RealTimeServerProgID,ServerName;Topic1;[Topic2], ...)

где аргументы функции имеют следующие значения:

  • RealTimeServerProgID

    Строка, представляющая идентификатор программы RTD-сервера, установленного в локальной системе. Обычно это надстройка COM, зарегистрированная процедурой установки или с помощью RegSvr32. RealTimeServerProgID — обязательный аргумент.

  • ServerName

    Строка, представляющая имя сервера, на котором будет выполняться RTD-сервер. Если RTD-сервер выполняется локально, имя_сервера должно быть пустой строкой ("") или опущено.

  • Topic1, [Topic2], ...

    Строки, определяющие извлекаемые данные. Вы можете использовать от одного до 28 разделов, хотя требуется только один раздел.

Использование RTD

В качестве примера функции RTD рассмотрите возможность получения сведений с сервера, который предоставляет непрерывные данные для бегунам в нескольких одновременных гонках. Предположим, что сервер предоставляется в виде библиотеки динамической компоновки (DLL) с именем RaceReport.dll, что он установлен на компьютере пользователя и что он зарегистрирован как надстройка COM в процессе установки. Общая форма функции RTD, используемой с этим сервером, может быть следующей:

=RTD("MyRTDServerProdID", "MyServer", "RaceNum", "RunnerID", "StatType")

где разделы RaceNum, RunnerID и StatType определяют интересующую расу, средство выполнения, данные которого требуются, и тип данных для конкретного использования функции соответственно.

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

=RTD("ExcelRTD.RaceReport","","2","16","Time")

чтобы увидеть текущее затраченное время для бегуна no 16 в гонке No 2. Количество разделов и характер связанных данных определяется разработчиком COM-сервера. Например, сервер отчетов о гонках может доставлять другие данные, если используется следующая функция RTD:

=RTD("ExcelRTD.RaceReport","","3","25","Position")

В этом случае возвращаемые данные указывают на текущую позицию бегуна под номером 25 в гонке под номером 3.

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

Оболочки для упрощения использования

Функцию RTD можно использовать внутри определяемых пользователем функций (UDF) в Microsoft Visual Basic для приложений. Затем они становятся оболочками для функции RTD. Этот подход может быть полезен для защиты пользователей от сведений об имени сервера RTD и ProgID, а также в том, чтобы они могли сосредоточиться только на важных для них данных.

Например, в предыдущем сценарии пользователю могут быть предоставлены две функции: GetTime(RunnerID) и GetPosition(RunnerID). Эти функции предполагают, что пользователь всегда имеет дело с тем же сервером и номером расы. Таким образом, пользователь должен только указать идентификатор средства выполнения, чтобы получить текущие данные о затраченном времени и положении средства выполнения, соответственно.

Вычисление

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

Безопасность

Серверы RTD должны быть с цифровой подписью. Если RTD-сервер не имеет цифровой подписи, сервер может не загружаться, и в ячейках, ссылающихся на сервер RTD, будет отображаться #N/A .

Для Microsoft Office Excel 2007 параметры безопасности можно просмотреть с помощью центра управления безопасностью. Доступ к этому можно получить на вкладке Центр управления безопасностью в диалоговом окне Параметры Excel .

В Microsoft Office Excel 2003 и Microsoft Excel 2002 поведение нагрузки можно изменить, настроив параметры безопасности макросов в Excel.

Ссылки

Дополнительные сведения о безопасности RTD и Excel см . в статье Настройка и использование функции RTD в Excel.

Дополнительные сведения о создании сервера RTD см. в статье Создание сервера RealTimeData для Excel.