Требования:
Вы должны гарантировать, что когда пользователь использует Excel, ваше приложение может собирать данные. Ваше приложение может не работать в данный момент. Вам нужно, чтобы событие Worksheet_SelectionChange () запускалось автоматически не только тогда, когда ваше приложение активно.
Решение:
В основном, чтобы гарантировать, что Worksheet_SelectionChange () работает все время, и чтобы каждый раз, когда пользователь открывает экземпляр excel, вы могли собирать и обрабатывать данные / формулы, введенные в конкретный адрес целевого диапазона, который вам нужен подключить событие selectionchange внутри надстройки COM VB.NET Excel. Есть несколько способов сделать это, но, поскольку вы используете VB.NET, лучше всего использовать новейший подход - создание VSTO COM Addin.
Существует множество других доступных квестов о том, как лучше всего создать надстройку VSTO (некоторые в C #, некоторые в VB.NET, но вся эта информация для обоих одинакова, только разный синтаксис).
Так что вам понадобятся два проекта. Ваш существующий, а также надстройка Excel VSTO (которую вы также можете сделать в VB.NET).
Теперь внутри события selectionchange вы должны убедиться, что ваш код правильно обрабатывает целевой диапазон; то есть. убедитесь, что вы проверили наличие неконкурентных групп диапазонов с выбором ... A1: B1; D2: E2 и скопировали данные в ваше приложение. Вы можете рассмотреть возможность использования формата, такого как xml, для сериализации последних данных из Excel, чтобы, если ваше приложение не было открыто в тот момент, оно могло десериализоваться и считывать данные, сохраненные для него, при следующем открытии. Я предполагаю, что это действительно зависит от того, как вы обрабатываете данные (то есть для загрузки в сетку данных?) И собираетесь ли вы выполнять дальнейшую обработку и сохранять ее где-то еще позже (в этом случае, возможно, вы можете поместить ее прямо в базу данных надстройка в Excel).