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

StackOverflow https://stackoverflow.com/questions/5349670

Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

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

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

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

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

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top