У меня есть макрос, который форматирует отчет Excel. Этот макрос необходимо запускать во многих различных книгах, так как отчет создается и сохраняется в новый файл каждый день, до недавнего времени это было в моей личной книге. Теперь мне нужно поделиться этим макросом со многими из моих сверстников.
Я планирую разместить надстройку в моей локальной папке надстроек. Сделайте там любые обновления и запустите процедуру, которая копирует надстройку в сетевое расположение и устанавливает ее только для чтения и скрыт. Все остальные пользователи не будут иметь надстройки на своей локальной машине. Поэтому при перезапуске Excel обновления вступят в силу.
Я создал «пустую рабочую книгу установщика», которая загрузит надстройку из сетевого расположения и убедится, что пользователь не копирует надстройку на свой локальный компьютер, предотвращение обновлений. Если возможно, я бы хотел, чтобы эта пустышка также добавила кнопку для надстройки на панель быстрого доступа, поэтому мне не нужно объяснять процесс пользователям, поскольку большинство из них не очень разбираются в технологиях. К сожалению, я не нашел способа сделать это, сохранив текущие настройки пользовательского интерфейса. Я полагаю, что большинство пользователей совсем не доработали свой пользовательский интерфейс, но я бы не стал отвечать за то, чтобы испортить чей-то пользовательский интерфейс.
Я все еще учусь работать с VBA, и это развертывается в сетевое окружение, которое также немного ново для меня. Если у вас есть какие-либо предложения о том, как можно улучшить код или какие-либо потенциальные проблемы, с которыми я могу столкнуться, будет принята с благодарностью. Хотя основной проблемой является добавление кнопки в QAT программным способом
Примечание:
Код CommonSizeAR находится в модуле 1 общего размера AR.xlam, а DeployAddIn находится в модуле 2 Workbook_Open хранится в «этой книге» "Common Size AR installer.xlsm
Private Sub deployAddIn()
Dim strAddinDevelopmentPath As String
Dim strAddinPublicPath As String
strAddinDevelopmentPath = "C:\AddIns" & Application.PathSeparator
strAddinPublicPath = "W:\NetworkDrive" & Application.PathSeparator
Application.DisplayAlerts = False
With ThisWorkbook
.Save
On Error Resume Next
SetAttr strAddinPublicPath & .Name, vbNormal
On Error GoTo 0
.SaveCopyAs Filename:=strAddinPublicPath & .Name
SetAttr strAddinPublicPath & .Name, vbReadOnly + vbHidden
End With
Application.DisplayAlerts = True
End Sub
Private Sub workbook_open()
Dim Result As Integer
Result = MsgBox("Would you like to install the Common Size AR Add-in?", vbYesNo + vbQuestion, "Install?")
If Result = vbNo Then
Application.ThisWorkbook.Close SaveChanges:=False
Exit Sub
End If
On Error Resume Next
AddIns("Common Size AR").Installed = False
On Error GoTo ErrorHandler1
AddIns.Add Filename:="W:\NetworkDrive\Common Size AR.xlam", Copyfile:=False
AddIns("Common Size AR").Installed = True
MsgBox "Add-in Installed!", vbOKOnly + vbInformation, "Done!"
Application.ThisWorkbook.Close SaveChanges:=False
Exit Sub
ErrorHandler1:
MsgBox "Install Failed! Please let Developer know", vbOKOnly + vbCritical, "Error!"
Exit Sub
End Sub