У меня есть торговая (программная) программа, которая подключается к Excel (через Excel RTD) для отображения цен в реальном времени на моем листе. (Я также делаю несколько расчетов.) Но по причинам, которые я полностью игнорирую, и не всегда, но очень часто, цена, которую я вижу на моем листе, имеет некоторую задержку по сравнению с ценой, которую я вижу в моем программном обеспечении. Иногда задержка цен, отображаемых в Excel, может составлять до нескольких минут. Поскольку Excel RTD должен предоставлять данные в реальном времени, похоже, что он где-то хранит данные, когда информации слишком много. Когда я деактивирую связь между Excel и моим программным обеспечением, цены продолжают обновляться на моем листе в течение нескольких мгновений (эти «несколько мгновений» равны задержке между Excel и программным обеспечением).
Это действительно раздражает, так как я не знаю, почему Excel RTD выдает мне цены с такой задержкой! В моем листе менее 300 заполненных ячеек, что, по моему мнению, абсолютно ничего. Конечно, мой лимит Excel установлен на 0, чтобы получать каждое обновление. Я также изменил свой файл с a на .xlsx
a .xlsb
, но ничего не изменилось, кроме размера файла.
Похоже, что Excel действительно где-то хранит данные, но я не хочу, чтобы это происходило; мне нужны данные в реальном времени.
- Использование последней версии Office -
Что происходит? Как мне получить мои данные в Excel в режиме реального времени?
решение1
Возможно, вам стоит рассмотреть возможность настройки интервала дроссельной заслонки RTD в Microsoft Excel, чтобы увеличить интервал дроссельной заслонки с помощью объектной модели Excel:
- В Excel перейдите в редактор Visual Basic (нажав ALT+F11 или щелкнув «Редактор Visual Basic» в меню «Макросы» (меню «Сервис»)).
- В окне Immediate (нажмите CTRL+G или щелкните Immediate Window в меню View) введите следующий код: Application.RTD.ThrottleInterval = 1000
- Убедитесь, что курсор находится на только что введенной строке, а затем нажмите клавишу ENTER.
- Чтобы проверить правильность настройки, введите следующую строку кода if в окне Immediate: ?Application.RTD.ThrottleInterval
- Если вы поместите курсор в конец этой строки и нажмете ENTER, должно отобразиться число 1000. Тогда вы будете знать, что ваш интервал дроссельной заслонки установлен правильно.
Прочитайте эту статью, возможно, она вам поможет: https://docs.microsoft.com/en-us/previous-versions/office/developer/office-xp/aa140060(v=office.10)#odc_xlrtdfaq_howconfigrtdthrottle