繁体   English   中英

检查 Sharepoint 上的共享 Excel 文件是否被锁定以供其他用户编辑

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM