ДНК Excel, как получить события для каждого незначительного изменения в таблице?

Разрабатывая приложение для обмена электронными таблицами Excel в режиме реального времени, я застрял на том, как получать события для изменения границ, изменения цвета, редактирования нескольких ячеек и т. Д.(Использовал VSTO, но проблема все еще сохраняется...)

Я попробовал Excel DNA для того, чтобы заставить RTD-сервер получать данные в реальном времени, чтобы преуспеть, но как отправить изменения в листе на RTD-сервер? Я пытаюсь.net реактивного расширения, но как написать пользовательские события для изменений в таблице Excel?

1 ответ

Решение

Объектная модель COM, которую предоставляет Excel вместе с набором событий, предоставляемых приложением, рабочим листом и другими объектами, представляет собой самый богатый набор информации, доступной в Excel. VSTO и любые другие типы надстроек (включая встроенные в Excel-DNA) ограничены одной и той же объектной моделью COM и набором событий, предоставляемых Excel.

Среди событий модели объектов COM, Worksheet_SelectionChange вероятно, лучше всего отслеживать изменения формата. Редактирование нескольких ячеек должно приводить к событиям пересчета.

RTD об уведомлении в другом направлении - сообщая Excel, что данные изменились, и что они должны пересчитаться.

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

Другие вопросы по тегам