簡體   English   中英

從網絡更新本地 MSOffice 加載項期間的權限被拒絕錯誤

[英]Permission Denied Error During Update of a Local MSOffice Add-In from Network

我正在嘗試在 PowerPoint 2003 中編寫一個程序,允許自動更新已安裝的加載項。 一般流程如下:

  1. 卸載加載項

    For Each objAddIn In Application.AddIns If UCase(objAddIn.Name) = UCase(AddInName) Then With objAddIn .Registered = msoFalse .AutoLoad = msoFalse .Loaded = msoFalse End With End If Next

  2. 從本地加載項目錄中刪除文件

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    If objFSO.FileExists(FileName) Then Set objFSO = Nothing Kill FileName End If

  3. 從網絡位置復制文件

  4. 安裝更新的加載項

到達第 2 步后,任何使用 FileSystemObject 或直接Kill刪除卸載后文件的嘗試都不可避免地會生成Run-time error '70': Permission denied 如果我點擊調試然后播放,它會運行,好像從來沒有問題一樣。

旁注:我意識到我可以使用 FSO 覆蓋本地文件,但這給了我相同的運行時錯誤。

我猜這個問題與正在使用的文件的某些方面有關,但我不知道如何“釋放”舊的加載項,以便可以刪除基礎文件。

有沒有人有洞察力可以提供幫助?

您需要先將其從 Addins Collection 中刪除,然后才能物理刪除。 把這個放在你的End With

Application.AddIns.Remove objAddIn.Name

參考可用於檢查鎖定文件的 VBA 函數的知識庫文章在這里。 http://support.microsoft.com/kb/209189

它包含一個簡單的函數,您可以將其添加到 VBA 中以檢查文件是否未鎖定,並使用 Otaku 在其答案中引用的相同代碼示例。

我要做的是...

替換代碼中的 Kill Filename 行

If FileLocked(Filename) = True Then  
SetAttr Filename, vbNormal  
Kill Filename  
End If

*其中 FileLocked 是 KB209189 中提到的自定義函數
**如果這不起作用,請回復,我們還可以考慮將上面的 Kill 語句替換為執行相同操作的較低級別的 Win32 函數(但可能更徹底)。 :D

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM