Процесс обновления надстройки Excel? - PullRequest
3 голосов
/ 30 июля 2009

У меня есть надстройка Excel 2003, развернутая в одном из наших отделов, которая иногда нуждается в обновлении. В настоящее время происходит то, что я публикую новую версию со своего компьютера в центральном расположении, при этом обновляется номер версии, хранящийся в базе данных, который надстройка проверяет каждый раз при запуске любого из модулей в ней, и если более новый номер версии затем надстройка останавливается с сообщением, информирующим пользователя о необходимости обновления надстройки.

В настоящее время они используют другую книгу с событием workbook_open, которое меняет надстройку.

Мне хотелось бы, чтобы надстройка обнаружила, что доступна более новая версия, и тихо установила ее, прежде чем продолжить работу пользователя. Проблема заключается в том, что это не удается на первом шаге удаления существующей версии, поскольку любой код в надстройке немедленно завершается, когда надстройка удаляется.

Я бы на лету создал некоторый код в персональном файле user.xls для обработки перехода, но я не могу установить флаг «Доверительный доступ к проекту Visual Basic» на компьютерах пользователей, поэтому не могу реплицировать код в надстройке.

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

Может кто-нибудь еще предложить лучшее решение? Это должен быть 100% Excel, не VSTO и т. Д.

Ответы [ 5 ]

4 голосов
/ 12 сентября 2009

Мы используем отдельный плагин в качестве загрузчика.

  1. Основной плагин может обновить загрузчик
  2. Если основной плагин нуждается в обновлении, он загружает загрузчик, затем использует вызов OnTime, чтобы запланировать вызов подпрограммы начальной загрузки в загрузчике и немедленно выгружает себя.
  3. Выполнен вызов по времени.
  4. bootstrapper загружает главное дополнение, перезапускает основное дополнение, выгружает себя.

Сложно, но работает.

2 голосов
/ 30 июля 2009

Было приятно, что Дик Куслейка написал в блоге об управлении надстройками сегодня!

http://www.dailydoseofexcel.com/archives/2009/07/29/conditionally-load-excel-add-ins/

Несколько хороших советов, которые можно применить к моей ситуации там.

0 голосов
/ 30 июля 2009

Я пробовал что-то другое, шаг следующий: 1. напишите надстройку и разместите ее на общем диске 2. добавить проект в ссылки VBA 3. Ваши функции и макросы, используемые в таблицах Excel, добавляются как ссылки на надстройки. каждый раз, когда загружается лист Excel, обновляются новые надстройки и ссылки.

я изменяю решение обновить кнопку из-за проблем, когда сеть не подключена.

0 голосов
/ 30 июля 2009

При использовании стандартного развертывания ClickOnce версия надстройки проверяется при каждом запуске приложения, использующего ее (Excel). Не уверен, что вы можете развернуть неуправляемый код таким способом.

0 голосов
/ 30 июля 2009

Один способ, которым я достиг чего-то похожего, хотя некоторое время назад, заключался в следующем:

Предоставьте кнопку «Обновить» на общей странице (может быть общим файлом, если вы используете много), и когда пользователи щелкают по нему, он открывает xls в сетевом расположении и копирует код из этого файла в локальный файл и закрывает вновь открытые файлы.

Таким образом, всякий раз, когда у меня было обновление, я отправлял электронное письмо с просьбой обновить код локально.

Это работало, так как у меня было мало пользователей, а обновлений было довольно мало. Если вы хотите автоматическое обновление, что мешает вам проверять номер версии при каждом открытии файла.

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