【问题标题】:Remove Add-in in Powerpoint with VBA使用 VBA 在 Powerpoint 中删除加载项
【发布时间】: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


【解决方案1】:

很晚的答案,但是自从我路过之后,我花了很多时间在这个问题上,而不是

kill (oAddin)

你需要

kill oAddin.fullname

尽管您还应该从 AddIn 集合中删除该插件并可能取消注册。

此外,在 2010 版中,当您尝试删除文件时,您可能会收到权限被拒绝的错误。这是由于ppt没有及时释放打开的插件文件造成的。事实上,定时器并不能解决它。但是第二次杀戮实际上会起作用。

【讨论】:

    猜你喜欢
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    • 2021-06-05
    相关资源
    最近更新 更多