gpt4 book ai didi

excel - 如何让 VBA excel 插件 .xlam 用远程更新的 .xlam 替换自身?

转载 作者:行者123 更新时间:2023-12-03 00:03:50 26 4
gpt4 key购买 nike

我需要某种方法来更新我的员工之间共享的 Excel 插件,这样每个人都不必手动下载和安装它。

我用谷歌搜索发现我们可以将文件写入操作系统文件系统,因此任务最终会写入新版本的插件(即 .xlam 文件)以覆盖自身。

我不知道如何做到这一点。如果你有的话,请分享!谢谢!

最佳答案

我不知道是否有更简单的方法,但我已经“破解”了一个涉及 SendKeys 的解决方案。哎呀,我知道。希望其他人能有更好的解决方案。

我记得,您需要先卸载插件,然后才能覆盖 .xla(m) 文件,而我找不到纯粹使用内置对象来执行此操作的方法。

下面的代码基本上会卸载加载项,调用“加载项”对话框并使用 SendKeys 将其从列表中删除,然后复制新文件并重新安装加载项.

根据您的情况修改它 - 当然,这取决于您的用户的安全设置是否足够低以使其运行。

Sub UpdateAddIn()          
Dim fs As Object
Dim Profile As String

If Workbooks.Count = 0 Then Workbooks.Add
Profile = Environ("userprofile")
Set fs = CreateObject("Scripting.FileSystemObject")
AddIns("MyAddIn").Installed = False
Call ClearAddinList
fs.CopyFile "\\SourceOfLatestAddIn\MyAddIn.xla", Profile & "\Application Data\Microsoft\AddIns\", True
AddIns.Add Profile & "\Application Data\Microsoft\AddIns\MyAddIn.xla"
AddIns("MyAddIn").Installed = True
End Sub

Sub ClearAddinList()
Dim MyCount As Long
Dim GoUpandDown As String

'Turn display alerts off so user is not prompted to remove Addin from list
Application.DisplayAlerts = False
Application.ScreenUpdating = False

Do
'Get Count of all AddIns
MyCount = Application.AddIns.Count

'Create string for SendKeys that will move up & down AddIn Manager List
'Any invalid AddIn listed will be removed
GoUpandDown = "{Up " & MyCount & "}{DOWN " & MyCount & "}"
Application.SendKeys GoUpandDown & "~", False
Application.Dialogs(xlDialogAddinManager).Show
Loop While MyCount <> Application.AddIns.Count

Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

关于excel - 如何让 VBA excel 插件 .xlam 用远程更新的 .xlam 替换自身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11577158/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com