我有一个用于格式化 Excel 报告的宏。该宏需要在许多不同的工作簿上运行,因为每天都会生成报告并将其保存到新文件中。这已经在我的个人作业簿中了。我现在需要分享这个宏。
我的计划是将该加载项放在我的本地加载项文件夹中。在那里进行任何更新并运行一个例程,将插件复制到网络位置并将其设置为只读和隐藏。其他用户的本地计算机上不会有该插件,因此当他们重新启动 Excel 时,更新就会生效。
我创建了一个“虚拟安装程序工作簿”,它将从网络位置加载插件,并确保用户不会将插件复制到本地计算机。
我希望这个虚拟工作簿向快速访问工具栏添加一个用于加载项的按钮,这样我就不必向用户解释该过程。我还没有找到一种方法可以在保留用户当前的 UI 设置的同时执行此操作。我想大多数用户都没有对他们的用户界面进行太多调整,但我宁愿不为弄乱某人的用户界面负责。
我仍在学习如何使用 VBA,并且它正在部署在网络环境中,这对我来说也有点新鲜。
Note:
- CommonSizeAR 代码位于 Common Size AR.xlam 的 module1 中,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