В настоящее время я делаю это, и это довольно глубокий процесс настройки, но, как только он будет запущен, он будет работать плавно.
1-й шаг - создать структуру папок с тестовыми и рабочими копиями ваших файлов .xlam, для которых вы являетесь администратором.
2-й, в рабочей папке, щелкните правой кнопкой мыши все файлы .xlam и установите атрибуты в свойствах только для чтения. Если вы этого не сделаете, вы никогда не сможете обновить надстройку, если в ней есть кто-то еще.
В-третьих, когда вы обновляете код в файле тестирования, просто замените производственный файл обновленным файлом и снова измените его на Только для чтения. Пользователям нужно будет только закрыть все экземпляры Excel и открыть заново, чтобы получить самую последнюю копию надстройки.
Ниже приведена надстройка администратора, которую я использую для перемещения тестовых файлов в рабочую среду.
Sub DeployAddIn()
'Author : Ken Puls (www.excelguru.ca)
'Macro Purpose: To deploy finished/updated add-in to a network
' location as a read only file
Dim strAddinDevelopmentPath As String
Dim strAddinPublicPath As String
Dim FSO As New FileSystemObject
'Set development path
ChDrive "R:"
ChDir "R:\addins\PROJECTS"
strAddinDevelopmentPath = Application.GetOpenFilename()
If strAddinDevelopmentPath = "False" Then
Exit Sub
ElseIf InStr(strAddinDevelopmentPath, "\PRODUCTION\") > 1 Then
If MsgBox("You've Selected a Production File To Replace a Production File. Would You Like To Continue Anyway?", vbYesNo) = vbNo Then
Exit Sub
End If
End If
'Get Desitination path
strAddinPublicPath = Replace(strAddinDevelopmentPath, "TESTING", "PRODUCTION")
'Create dir if it doesn't exist
On Error Resume Next
MkDir Left(strAddinPublicPath, InStrRev(strAddinPublicPath, "\") - 1)
On Error GoTo 0
'Turn off alert regarding overwriting existing files
Application.DisplayAlerts = False
'overwrite existing file
On Error Resume Next
SetAttr strAddinPublicPath, vbNormal
On Error GoTo 0
FSO.CopyFile strAddinDevelopmentPath, strAddinPublicPath, True
SetAttr strAddinPublicPath, vbReadOnly
'Resume alerts
Application.DisplayAlerts = True
End Sub
4-й, я также написал макрос для изменения пользовательской ленты. Приведенная ниже ссылка, кроме того, полезен сайт Рона де Брюина. https://grishagin.com/vba/2017/01/11/automatic-excel-addin-installation.html
Код для автоматизации установки надстройки после получения нужного текста из файла officeUI
Sub InstallAddin()
'Adapted from https://grishagin.com/vba/2017/01/11/automatic-excel-addin-installation.html
Dim eai As Excel.AddIn
Dim alreadyinstalled As Boolean
Dim ribbonXML As String
'check if already installed
For Each eai In Application.AddIns
If eai.Name = "Main addin.xlam" Then
eai.Installed = False
Exit For
End If
Next
'add and install the addin
Set eai = Application.AddIns.Add("path to Main addin.xlam", False)
eai.Installed = True
'append quick access ribbon xml to add button
ClearCustRibbon
LoadNewRibbon
'have to close addin for it to load properly the first time
Workbooks("Main addin.xlam").Close
End Sub
Sub ClearCustRibbon()
'https://social.msdn.microsoft.com/Forums/vstudio/en-US/abddbdc1-7a24-4664-a6ff-170d787baa5b/qat-changes-lost-when-using-xml-to-modify-ribbon-excel-2016-2016?forum=exceldev
Dim hFile As Long
Dim ribbonXMLString As String
hFile = FreeFile
OfficeUIFilePath = Environ("USERPROFILE") & "\AppData\Local\Microsoft\Office\Excel.officeUI"
ribbonXMLString = "<mso:customUI xmlns:mso=""http://schemas.microsoft.com/office/2009/07/customui"">" & _
"<mso:ribbon>" & _
"<mso:qat>" & _
"<mso:sharedControls>" & _
"</mso:sharedControls>" & _
"</mso:qat>" & _
"</mso:ribbon>" & _
"</mso:customUI>"
Open OfficeUIFilePath For Output Access Write As hFile
Print #hFile, ribbonXMLString
Close hFile
End Sub
Sub LoadNewRibbon()
Dim hFile As Long
hFile = FreeFile
OfficeUIFilePath = Environ("USERPROFILE") & "\AppData\Local\Microsoft\Office\Excel.officeUI"
ribbonXML = "your ribbon text here"
Open OfficeUIFilePath For Output Access Write As hFile
Print #hFile, ribbonXML
Close hFile
End Sub
*** ВАЖНО ---- Если вы устанавливаете надстройку вручную, убедитесь, что вы выбрали нет при появлении запроса, если вы хотите, чтобы файл был сохранен на локальном компьютере. Если вы сохраните его на локальном компьютере, он создаст локальную копию и никогда не будет обновляться, если вы вносите изменения в сетевую копию или хотите исправить ошибку.
Есть и другие советы, но вам в основном нужно будет адаптировать их, чтобы они соответствовали вашей деятельности Надеюсь, это поможет.