VB - автоматизированный Excel в Visual Studio 2010 - выбор изменен вопрос - PullRequest
1 голос
/ 02 ноября 2010

В настоящее время я пишу утилиту, которая берет два разных набора данных из документа Excel и отправляет их двум разным веб-сервисам.Каждый набор данных имеет свою собственную кнопку, которая отправляет данные в веб-сервис.Когда нажимается кнопка a, соответствующий веб-сервис возвращает данные в зависимости от введенных значений.

Я пытаюсь сделать так, чтобы эта утилита могла распространяться и использоваться широким кругом людей.То, что они собираются сделать, это то, что они будут синхронизировать определенные ячейки своего собственного документа Excel с соответствующей ячейкой в ​​моей утилите.Используя простые формулы Excel.Например:

c:\temp\[book1.xls]sheet1'!a1

Теперь я пытаюсь автоматически «нажать» кнопку или обновить мою утилиту, когда пользователь связывает свою ячейку с соответствующей ячейкой в ​​моей утилите.

Я попробовал событие изменения выбора на моей странице.Но на самом деле он не обрабатывается до тех пор, пока моя утилита не будет активна или не нажата.

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

1 Ответ

2 голосов
/ 03 ноября 2010

Требования:
Вы должны гарантировать, что когда пользователь использует 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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...