Как правильно добавить глобальный макрос в Excel - PullRequest
0 голосов
/ 02 февраля 2020

Я пытаюсь в нашем установщике добавить макрос, который доступен для каждого листа. В настоящее время мы делаем в нашем установщике wix (как 32-битные, так и 64-битные):

msOfficeApp.Workbooks.Add            
msOfficeApp.Workbooks.Open (Session.Property("ExcelMacroLoc") & "AutoTagExcelMacro.xla")
msOfficeApp.Workbooks("AutoTagExcelMacro.xla").RunAutoMacros 1
...
<Property Id="ExcelMacroLoc" Value='C:\' />
<CustomAction Id="AssignExcelMacroLoc" Return="check" Execute="firstSequence" Property ='ExcelMacroLoc' Value='[INSTALLDIR]'>
</CustomAction>

Это работает иногда, но не всегда. Часто мы получаем некоторые или все из нижеперечисленного. Каков наилучший способ сообщить Excel, где находится этот скрипт VBA и что его можно использовать на любом листе?

enter image description here

enter image description here

enter image description here

Я думаю, что вопросы / вопросы:

  1. Есть ли что-нибудь в этом макросе ( AutoTagExcelMacro.xla ) что нужно изменить (написано в 2000 году)?
  2. Следует ли изменить расширение файла на .xlam? И требует ли это каких-либо других изменений?
  3. Как поставить цифровую подпись xla-файла ?
  4. Как выяснить , где установлен Excel (чтобы узнать, где установить макрос)?
  5. Как мне определить разрядность Excel ( GetBinaryType не работает ).
  6. Is Есть ли что-то еще, что мне нужно сделать, кроме копирования файла xla в соответствующую папку?

Также спрашивается на MSDN (я отправлю любой ответ оттуда здесь).

1 Ответ

0 голосов
/ 03 февраля 2020

"@ProfoundlyOblivious. Не могли бы вы опубликовать ответ, сообщающий нам, как лучше выполнять каждую часть - цифровую подпись, надежное местоположение и т. Д. c. И что / где мы должны указывать людям искать макросы быть отключенным? - Дэвид Тилен"

Раскрытие информации: Я не специалист по развертыванию программного обеспечения, мои знания ограничены препятствиями, которые я столкнулся с тем, что делился своими решениями VBA с коллегами по IT-сетям

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


безопасности

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

  • Настройки безопасности макросов Макросы включен через Центр управления безопасностью, доступ к которому осуществляется через меню файлов. Эти параметры независимы для каждого приложения Office, и некоторые приложения могут иметь дополнительные параметры, включающие подавление диалогового окна. Например, Excel, где все макросы могут быть отключены без уведомления или все макросы могут быть отключены с уведомлением. Существует три основных c параметра для всех приложений Office, которые в сумме обозначаются следующим образом:

    • Отключить все макросы
    • Отключить все неподписанные макросы
    • Включить все макросы ( Не рекомендуется)

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


  • Макросы с цифровой подписью Макрос с цифровой подписью сам по себе просто означает, что базовый код не был изменен кем-либо с тех пор, как подписчик последний раз его сохранял. Если сертификат подписавшего установлен на компьютере в качестве доверенного издателя, то макросы, подписанные этим сертификатом, могут запускаться без уведомления в соответствии с необходимыми параметрами безопасности макросов.

    • В корпоративных средах ИТ может сохранить библиотека сертификатов, и для внутреннего разработчика может существовать установленная процедура представления проекта для более широкого распространения , после чего ИТ-отдел подписывает проект, чтобы его можно было запустить с минимальным вмешательством.

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

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

    По умолчанию XLStart является надежным местоположением


Доступность файла

При открытии Excel он попытается обновить sh ссылки на другие источники данных и надстройки. Эти файлы должны быть открыты для успешного refre sh, и в случае сбоя refre sh появится диалоговое окно.

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

Другими словами, диалоговое окно было раздражением это не имеет значения.

Существует опция, которая предлагает некоторый контроль над окном «Ссылки не могут быть обновлены» с опциями в виде:

  • Обновлять ссылки и уведомлять
  • Обновлять ссылки и не уведомлять

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

Насколько мне известно, самый надежный способ избежать предупреждения такого типа - установить надстройку после стабилизации Excel и удалить надстройку до закрытия Excel . Конечно, это связано с множеством проблем, включая более медленное время загрузки.

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