Sub Install_Addin()
Dim AI as excel.addin
Set AI = Application.Addins.Add("C:\Add_In.xlam")
AI.Installed = True
Application.Addins("Add_in").Installed = True
End Sub
以上是我从Chip Pearson获得的代码,用于安装excel的加载项。这段代码第一次运作良好。我的加载项有一个控制按钮(我在编写加载项时修改了xml),因此,当安装加载项时(使用上面的代码),我的excel功能区上会自动出现一个按钮,然后我可以使用我的加载项。
问题是当我尝试重新安装我的加载项时。当我更新我的加载项的代码并尝试使用上面的代码重新安装时,我收到此错误----
runtime error '1004'
Unable to copy add-in to library
这是因为加载项在重新安装之前未正确卸载。我已经放弃了在网上搜索使用VBA代码取消加载项的方法。我找不到任何简单的解决方案。
现在,卸载我的加载项的唯一方法是手动执行此操作。首先,我从Microsoft Add ins文件夹中删除加载项。然后我打开Excel,它给我一个警告消息,它无法找到加载项。然后我转到加载项管理器并单击我的加载项,然后单击go。然后在加载项列表中,我勾选我的加载项,然后excel说“加载项不存在。从列表中删除?”然后最终删除加载项。
只有在手动删除这样的加载项后,才能使用上面的代码重新安装我的加载项。现在这真的很麻烦,特别是当我想将加载项分发给其他人时。必须有一种更简单的方法来更新加载项,而无需先手动删除它。
请不要提供您认为“可能”对此问题正确的随机答案或答案。另外请不要告诉我“尝试这个和那个”。只有您知道正确的解决方案,请告诉我。我已经尝试过很多事情都无济于事。 :)
非常感谢。
答案 0 :(得分:3)
如果您要更改XLAM中的代码,但保持其名称和位置相同,则无需将其重新安装为插件。
如果要卸载现有插件以便可以安装具有不同名称的新版本,可以将现有插件的Installed属性设置为False,但这会将现有插件保留在可用但未安装的列表中加载项。
如果要更改插件的名称或位置,更好的解决方案是使用存根插件加载器来简化还原和加载问题。您可以从我的网站http://www.decisionmodels.com/downloads.htm
下载一个开源的工作示例