无法删除OneDrive/SharePoint文件:遇XML错误207(423文件锁定)
问题概述
我开发了一款处理SAP导出XLSX文件的工具,核心操作流程为:
- 以
ReadOnly=True打开源文件 - 复制目标工作表到工具工作簿
- 以
SaveChanges=False关闭源文件 - 执行删除操作
本地使用Kill命令操作完全正常,但当源文件存储在OneDrive/SharePoint时,会随机出现删除失败的情况,触发XML错误207,响应文本返回HTTP 423(文件已锁定)。
注:直接将源文件复制到同步文件夹后不打开就删除(通过HTTPS操作),每次都能成功;但执行「打开/复制/关闭」流程后,就会随机触发锁定问题。
错误响应详情
Response: <?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:" xmlns:Office="urn:schemas-microsoft-com:office:office" xmlns:Repl="http://schemas.microsoft.com/repl/" xmlns:Z="urn:schemas-microsoft-com:"><D:response><D:href>https://MyCompany.sharepoint.com/sites/pwa2/Customer/E/E12%20Supply%20Chain/PROCUREMENT/0_ZPSR313/export.xlsx</D:href><D:status>HTTP/1.1 423 Locked</D:status></D:response></D:multistatus>
出现该问题后,多数情况下无法直接从SharePoint文件夹删除文件,系统提示「文件已被其他用户签出或锁定」(测试时仅我一人访问),唯一临时解决方法是用桌面Excel打开该文件再关闭,即可解锁。
相关代码片段
注释以下代码后,即可正常删除在线文件:
Set source_workbook = Workbooks.Open(SelectedFile, ReadOnly = True) FlPath = source_workbook.Path ' source_workbook.Windows(1).Visible = False source_workbook.Sheets(1).Copy before:=ThisWorkbook.Sheets(1) WaitForm.StepLbl.Caption = "Waiting for raw ZPSR313 to close" DoEvents source_workbook.Close (False)
已尝试的无效方案
- 改为以
ReadOnly=False打开文件 - 将源文件另存到本地临时文件夹后再处理
- 删除前调用
Application.Wait等待一段时间 - 删除本地同步的文件副本(但在线文件仍处于锁定状态)
源文件无外部链接及宏,请问如何彻底避免该锁定问题?
内容的提问来源于stack exchange,提问作者Michaël
相关产品推荐
相关产品推荐

