一系列 Microsoft 簡報圖形產品,提供建立簡報及新增圖形效果 (例如多媒體物件和具有文字的特殊效果) 的工具。
Hi, 布可 林
歡迎來到 Microsoft Q&A 社群。
非常感謝您耐心等候我們處理此問題。
在 PowerPoint 中,存檔期間的重新命名/刪除步驟有時無法立即(或根本無法)重新建立擁有者檔案 (owner file),除非您關閉並重新開啟簡報。這種情況在 Word 或 Excel 中並不常見,它們能更可靠地重新建立鎖定。測試和報告顯示,這種情況可能因以下因素而異:
- Office 版本/組建: 永久授權版 (2016/2021) 與 Microsoft 365 (訂閱制) 在檔案處理上可能有所不同,這歸因於雲端整合或共同撰寫功能的更新,即使是本機檔案也可能受影響。
- 系統設定: Windows 10 與 11、檔案位置(本機磁碟 vs. 網路/OneDrive 同步資料夾)、權限或背景處理程序(例如防毒軟體干擾暫存檔)都可能產生影響。如果檔案位於 OneDrive 同補資料夾中,系統可能完全不會建立擁有者檔案,因為鎖定機制已轉移到雲端處理。
- 沒有明確的規律: 正如您所觀察到的,這種情況在不同設定下都難以預測。Microsoft 論壇和社群中也有類似的報告,指出 PowerPoint 中存在間歇性問題,但在 Word/Excel 中則沒有,這表明應用程式在釋放和重新取得檔案控制代碼的程式碼上存在差異。
由於此行為,依賴 ~$ 檔案是否存在來判斷 PowerPoint 檔案狀態並不可靠。建議您修改您的小工具,改為嘗試以獨佔鎖定方式開啟檔案來檢查其是否正在使用中。如果嘗試失敗(因為 PowerPoint 已將其開啟),則表示該檔案正在使用中。此方法在各個 Office 應用程式中都能穩定運作,並能避免暫存檔的異常問題。
以下是一個 C# 的範例(假設您的小工具是使用 .NET 開發;請根據您使用的語言進行調整):
using System;
using System.IO;
public class FileInUseChecker
{
public static bool IsFileInUse(string filePath)
{
try
{
// Attempt to open the file with exclusive access
using (FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.None))
{
stream.Close();
}
return false; // Opened successfully, so not in use
}
catch (IOException)
{
// IOException means file is locked/in use
return true;
}
catch (Exception)
{
// Other errors (e.g., file not found)
return false;
}
}
public static void Main(string[] args)
{
string pptxPath = @"C:\Path\To\Your\File.pptx";
if (IsFileInUse(pptxPath))
{
Console.WriteLine("File is open/in use.");
}
else
{
Console.WriteLine("File is not open.");
}
}
}
運作原理: FileShare.None 會請求獨佔存取權。如果 PowerPoint(或任何其他應用程式)已開啟該檔案,此嘗試將失敗並引發 IOException。
優點: 方法直接,不依賴 ~$ 檔案,適用於所有檔案類型,且能處理網路和本機檔案。
注意事項: 請確保您的小工具對該檔案擁有讀取權限。此方法無法偵測到以無鎖定的唯讀模式開啟的檔案。
如果此範例不適用於您小工具的語言/框架,請提供更多詳細資訊,以便我們為您提供更貼切的範例。關於此錯誤,您可透過 PowerPoint 的「意見反應」工具(檔案 > 意見反應)向 Microsoft 支援部門報告,並附上您的測試環境設定。如果受影響電腦上的檔案位於 OneDrive 資料夾中,請嘗試將其移動到非同步的位置進行測試。
感謝您的體諒與理解。如果您有任何其他需要,請隨時與我聯繫。
如果這個回答對您有幫助,請點擊「接受答案」並給予好評。 如果您對此回答有其他問題,請點擊「評論」。
Note:如果您希望收到此討論串的相關電子郵件通知,請依照「變更您的 : 變更您的Microsoft問答喜好設定 | Microsoft Learn