使用VBA更新xlam加载项

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插件的代码。 这段代码第一次运行良好。 我的加载项有一个控制button(我在修改插件的同时修改了xml),所以当安装插件(使用上面的代码)时,一个button会自动出现在我的excelfunction区上,然后我可以使用我的加载项。

问题是当我尝试重新安装我的加载项。 当我更新我的加载项的代码,并尝试使用上面的代码重新安装,我得到这个错误—-

 runtime error '1004' Unable to copy add-in to library 

发生这种情况是因为加载项在重新安装之前未正确卸载。 而且我已经放弃了在networking上search一个使用VBA代码来取消加载项的方法。 我找不到任何简单的解决scheme。

现在解除我的加载项的唯一方法是手动执行。 首先,我从Microsoft Add ins文件夹中删除加载项。 然后,我打开Excel,它给了我一个警告消息,它无法find加载项。 然后我去到加载项pipe理器,点击我的加载项,然后点击去。 然后在加载项列表中,勾选我的加载项,然后excel显示“加载项不存在,从列表中删除? 然后加载项最终被删除。

只有像这样手动删除加载项后,才可以使用上面的代码重新安装我的加载项。 现在这是非常麻烦的,尤其是当我想要将加载项分发给其他人时。 必须有一个更简单的方法来更新加载项,而不必先手动删除它。

请不要随机提供答案或答案,您认为这个问题“可能”是正确的。 也请不要告诉我“试试这个和那个”。 只有你知道正确的解决scheme,告诉我一下。 我已经尝试了一些无济于事的东西。 🙂

非常感谢。

如果您要更改XLAM中的代码,但保持其名称和位置不变,则不需要将其重新安装为插件。

如果要卸载现有的插件,以便可以使用不同的名称安装新版本,则可以将现有插件的“已安装”属性设置为False,但这会将现有的插件保留在可用但未安装的插件列表中。

如果您想更改插件的名称或位置,更好的解决scheme是使用存根插件加载器来简化反向和加载问题。 你可以从我的网站http://www.decisionmodels.com/downloads.htm下载一个开源的工作例子