![](/img/trans.png)
[英]Check if Excel file saved in SharePoint can be edited in full desktop (not locked by user using Excel Online)
[英]Check if a shared Excel file on Sharepoint is locked for editing by another user
我有一个 Excel 共享工作簿存储在旧版 SharePoint 2010 文档库中,需要通过 VBA 工具打开该文档库以供多个用户编辑。 先发制人的问题:我不确定图书馆是否在编辑前强制执行 CheckOut,但我不是网站所有者,甚至没有权限查看此设置。
我已经使用 .CanCheckOut 属性来查看另一个用户是否已经签出了文档(通过我的工具,即使库不强制执行它,它总是在编辑之前签出),代码中止并显示一条消息以重试以后,如有必要。 但是有一种情况,用户可能会 go 进入共享文件并手动编辑,然后重新签入但不立即关闭文件。 这意味着 .CanCheckOut 属性为 TRUE(不再签出文件),但另一个尝试使用我的工具的用户在运行时触发了“正在使用的文件”对话框,因为从技术上讲,共享文件在编辑模式下仍处于打开状态(由其他人),尽管没有被签出。
有什么方法可以检查这种情况,即共享文件已签入但其他用户可以写入的位置打开? 我宁愿这避免任何用户交互,但即使我们无法避免“使用中的文件”对话,我也需要一种方法来检测到这一点并优雅地退出。
这篇文章因同样的问题被悲惨地放弃了: 检查 SharePoint 365 中的工作簿是否被锁定以进行编辑
请尝试下一个 function:
Function IsFileBlocked(strFileName As String) As Boolean
On Error Resume Next
Open strFileName For Binary Access Read Write Lock Read Write As #1
Close #1
IsFileBlocked = Err.Number
Err.Clear: On Error GoTo 0
End Function
它可以这样使用:
If Not IsFileBlocked("\\pathToYourWorkbook\TestWorkbook.xlsx") Then
Workbooks.Open "\\pathToYourWorkbook\TestWorkbook.xlsx"
Else
MsgBox "File bloked (open by another user)...", vbInformation, "Open aborted"
End If
而不是 Intranet 路径(我用于测试原因),您必须使用 sharePoint 工作簿的路径,当然......我不使用 sharePoint 位置,我没有在这些情况下测试它。
function 的基础是无法为二进制访问打开打开的工作簿。 而且这个评估只需要几毫秒(在 Intranet 上,至少......)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.