Обновление распределенных макросов Word VBA - возможно ли это, как бы вы это сделали?

У меня есть макрос VBA, который работает в Word 2003. Это один модуль и код, прикрепленный к пользовательской форме, и он используется примерно на 30 клиентских сайтах. Когда я впервые развернул это, я отправил кого-то на каждый сайт, чтобы поместить шаблон .dot в папку Word Startup каждого из 30 полей, после чего макрос отображается в виде кнопки на панели инструментов для каждого пользователя.

Все пользователи подключены к интернету.

Расположение шаблона .dot варьируется от машины к машине, поэтому я полагаю, что «установщики» не будут работать?

Я ожидаю, что макрос придется время от времени менять. Есть ли способ заставить пользователя нажать кнопку, чтобы макрос обновился?

Будь то кнопка или автоматический запуск проверки обновлений, мне, вероятно, нужно знать, как определить, откуда запускается макрос (путь) без обязательного сохранения документа, и как найти путь к папке «Автозагрузка» инструменты> параметры> расположения файлов, но программно.


person Saul    schedule 18.03.2011    source источник


Ответы (2)


Это можно сделать.

  1. создайте 2 файла .dot, loader.dot (проверка обновлений) и worker.dot (основной макрос, который вы используете и хотите иметь возможность обновляться автоматически).

  2. первый loader.dot должен находиться в C:\Program Files\Microsoft Office\OFFICE11\STARTUP

Это надежное место, и макрос будет загружен в любой документ Word. Используйте подпрограмму AutoExec(), чтобы убедиться, что она запускается всякий раз, когда загружается текстовый документ.

worker.dot может находиться в любом фиксированном месте установки, например. C:\yourapp\worker.dot

Логика в loader.dot заключается в удалении любой ссылки на worker.dot (мне пришлось включить доверие модели VBA в настройках безопасности макросов), проверить наличие обновлений с помощью http-вызова, если новая версия доступна, загрузите ее, перезаписав worker.dot, затем добавьте ссылка из файла с указанием worker.dot

person Saul    schedule 22.06.2011

Я не уверен, что модель «пользователь нажимает кнопку» идеальна.

Я бы рассмотрел создание шаблона «загрузчика». Его работа будет заключаться в том, чтобы запускаться при запуске и искать обновления шаблона/макроса, которые у вас уже есть, и загружать/устанавливать/любые такие файлы при их изменении. Затем загрузите все, что установлено локально для использования.

Вы также должны подумать о том, является ли проблемой, если обновление доступно, но кто-то им не пользуется (возможно, он запустил Word до того, как изменение было загружено, или он не в сети). Кроме того, вам нужно знать, какую версию используют люди? Попросите вашего загрузчика сообщить об этом через HTTP, электронную почту или каким-либо другим способом (Twitter?)

Любой такой загрузчик должен быть либо очень стабильным (иначе вы просто замените погоню за заменой целевого шаблона на погоню за заменой загрузчика), либо способен обновлять себя при необходимости.

person Mike Woodhouse    schedule 18.03.2011