【发布时间】:2014-09-30 13:34:55
【问题描述】:
我在 PowerPoint 中有一个不定期更新的 VBA 插件。我在 VBA 中编写了一个代码,每周一都会检查是否存在更新版本的插件。如果是这样,PowerPoint 会自动更新加载项。到目前为止,我已经完成了:
- 在 PowerPoint 中停用旧的加载项
- 删除 Microsoft 加载项文件夹中的旧加载项
- 将新加载项复制到 Microsoft 的加载项文件夹中
- 在 PowerPoint 中激活新插件
但是,我似乎找不到正确的命令来删除 PowerPoint 中的旧加载项。旧的外接程序仍在 PowerPoint 的可用外接程序中,并且 PowerPoint 还将其列在不活动的应用程序外接程序下。
这是代码的一部分,它首先停用加载项,然后尝试将其从 PowerPoint 中删除。
Dim oAddin As AddIn
For Each oAddin In Application.AddIns
If Left(oAddin.name, 16) = "PPT ACO Add-in V" Then
oAddin.Loaded = msoFalse
Kill (oAddin) '<-- these is the line of Code that doesn't execute
End if
Next oAddin
该程序可以运行,但一段时间后,我会在 PowerPoint 中放置一堆不活动的加载项,这会让用户感到非常困惑。
非常感谢你们的帮助。
汤米
【问题讨论】:
-
Kill (oAddin) 不起作用(in 可能只会抛出错误;您是否设置了 On Error Resume Next 并且没有错误处理程序?)重新启动 PPT 后,旧的加载项仍然存在在非活动插件中列出? Kill (xx) 需要一个完整路径的文件名,并将删除该文件;尝试杀死(oAddin.Fullname)。但首先使用 oAddin.Registered = msoFalse
-
感谢您的意见。是的,Kill 确实产生了错误,所以我确实使用了 On Error Resume next 来继续子例程。正在加载新的加载项,而旧的加载项已放入非活动列表。但是,重新启动 PowerPoint 后,新的加载项在 PowerPoint 中消失了,而旧的加载项又重新加载了。我尝试了以下命令,但没有一个有效:Kill oAddin.FullName, Kill (oAddin.Path), oAddin.AutoLoad = msoFalse, oAddin.Application.Visible = msoFalse, oAddin.Registered = msoFalse, oAddin.Application。可见 = msoFalse, 杀死 oAddin, 杀死 (oAddin)
-
奇怪的是,我之前能够从 Microsoft 的默认加载项文件夹中删除旧的加载项。现在那部分代码不再起作用了
标签: vba powerpoint office-addins