ДНК 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. При этом вы можете следить за тем, что происходит на экране, на уровне, который будет использовать программа чтения с экрана.