Распространение макроса как надстройки для других пользователей - PullRequest
0 голосов
/ 22 мая 2018

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

Я создал специальную рабочую книгу, которая содержит множество различных типов данных, таких как даты, строки и числа.Каждый из пользователей должен управлять одними и теми же типами данных, поэтому мы используем эту книгу в качестве шаблона.Данные хранятся в столбцах, к которым я применил условное форматирование и проверку данных, чтобы пользователи не могли вводить неправильные значения.Эта рабочая тетрадь содержит несколько рабочих листов с конкретными именами.Имена этих рабочих листов появляются в коде - чтобы сделать некоторые конкретные расчеты для каждого из них (основываясь на названии рабочего листа).

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

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

  1. Это действительно лучшее решение?Может кто-нибудь дать мне подсказку, чтобы сделать его лучше?

  2. Если надстройка лучшая, есть ли способ добавить это только в определенные рабочие книги (которые являются моим шаблоном))?

  3. Можно ли установить надстройку, когда кто-то открывает определенную книгу (с помощью Workbook_Open), и удалить ее, когда книги закрываются (с помощью Workbook_BeforeClose).Я искал ответы в Интернете, но этот вопрос мне не понятен.Если это возможно, повлияет ли это на скорость закрытия / открытия рабочих книг?

Спасибо за любую помощь / совет!

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Для распространения надстройки через общий диск с собственной копией для разработки я настоятельно рекомендую прочитать по ссылке .В нем есть описание процесса установки, включая очень важный момент, который BraX поднял в своем ответе - ответ No на вопрос о копировании в личную папку надстройки.

Ниже приведен скорректированный код изссылка, которую я использую для сохранения надстроек.Он входит в обычный модуль в самой надстройке.Он сохраняет надстройку в папке и устанавливает ее атрибут на Read only, чтобы при ее использовании кем-либо она не блокировалась.Эта настройка позволяет обновлять файл, выполняя этот макрос в любое время, без необходимости преследовать пользователей и заставлять их закрывать Excel.

Private Sub Deploy()
Dim FolderOnSharedDrive as String
FolderOnSharedDrive = "Folder path to store add-in in here"
With ThisWorkbook
    On Error Resume Next
    SetAttr FolderOnSharedDrive  & .Name, vbNormal
    On Error GoTo 0
    .SaveCopyAs FolderOnSharedDrive  & .Name
    SetAttr FolderOnSharedDrive  & .Name, vbReadOnly
    MsgBox "Deploy Completed to " & FolderOnSharedDrive  & .Name
End With
End Sub

Рекомендуется добавить проверки для пути к файлу и, возможно, некоторыеобработка ошибок.Что касается некоторых других проблем, которые вы затрагиваете:

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

    1. Включите ленту для надстройки, которая включает обратный вызов для видимости.Установите его на вид, когда конкретная книга (шаблон) активна.Он все равно будет загружен в память в любом экземпляре Excel

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

  • Добавление / удаление надстроек при закрытии или открытии определенно повлияет на скорость, но я не могу сказать, будет ли это заметно,

0 голосов
/ 22 мая 2018

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

Часто, когда люди устанавливают надстройку, они отвечают ДА на вопрос о ее копировании на локальный диск, и это неправильный ответ.Если они случайно нажмут ДА, вам нужно будет отредактировать их реестр, чтобы удалить локальную ссылку.

...