2014-09-30 23 views
0

我在PowerPoint中有一個偶爾更新的VBA加載項。我在VBA中編寫了一個代碼,每個星期一有一個檢查是否存在更新版本的加載項。如果是這樣,PowerPoint會自動更新加載項。到目前爲止,我有這樣完成的:使用VBA刪除Powerpoint中的加載項

  • 停用舊的加載項在PowerPoint
  • 刪除舊的附加在微軟的加載項文件夾
  • 複製新添加到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奠定左右,這將是非常令人困惑的用戶。

非常感謝你的幫助。

湯米

+0

Kill(oAddin)不會工作(在可能只是拋出錯誤;你有錯誤恢復下一個設置,沒有錯誤處理?)重新啓動PPT後,舊的加載項仍然列在Inactive Addins ? Kill(xx)需要一個完全路徑的文件名並將刪除該文件;嘗試殺死(oAddin.Fullname)。但首先使用oAddin.Registered = msoFalse – 2014-09-30 14:29:59

+0

感謝您的意見。是的,Kill確實產生了錯誤,因此我在下一次使用「錯誤恢復」繼續執行子例程。新的加載項正在加載,而舊的加載項放在不活動的列表中。但是,PowerPoint重新啓動後,新的加載項在PowerPoint中消失,並且舊的加載項再次加載。我嘗試了以下命令,但它們都沒有工作:殺死oAddin.FullName,殺死(oAddin.Path),oAddin.AutoLoad = msoFalse,oAddin.Application.Visible = msoFalse,oAddin.Registered = msoFalse,oAddin.Application。 Visible = msoFalse,Kill oAddin,Kill(oAddin) – user2999959 2014-09-30 15:30:58

+0

奇怪的是,我以前能夠從Microsoft的默認加載項文件夾中刪除舊的Add'in。現在,部分代碼不再適用 – user2999959 2014-09-30 15:32:08

回答

2

很晚的答案,但因爲我通過了,我花了我相當一段時間在這個問題上,而不是

kill (oAddin) 

你需要

kill oAddin.fullname 

雖然你也應該從AddIns集合中刪除插件並可能取消註冊。

另外,在版本2010中,當您嘗試刪除文件時,您可能會收到拒絕的權限錯誤。這是由ppt不及時釋放打開的插件文件引起的。事實上,一個計時器不能解決它。但是第二次擊殺實際上會起作用。