检查 Sharepoint 上的共享 Excel 文件是否被锁定以供其他用户编辑
Check if a shared Excel file on Sharepoint is locked for editing by another user
我有一个 Excel 共享工作簿存储在遗留的 SharePoint 2010 文档库中,多个用户需要通过 VBA 工具打开它进行编辑。先发制人:我不确定图书馆是否在编辑前强制执行 CheckOut,但我不是网站所有者,甚至没有权限查看此设置。
我已经使用 .CanCheckOut 属性 查看是否有其他用户已经签出文档(通过我的工具,它总是在编辑之前签出,即使图书馆不强制执行),以及代码中止并显示一条消息,如有必要,稍后再试。但有一种情况,用户可能会进入共享文件并手动编辑,然后返回 但不会立即关闭文件 。这意味着 .CanCheckOut 属性 为 TRUE(文件不再签出)但是 'File In Use' 对话在运行时由另一个试图使用我的工具的用户触发,因为共享文件在技术上仍然是尽管未签出,但以编辑模式打开(由其他人打开)。
有什么方法可以检查这种情况,即共享文件已签入但已被其他用户打开为可写?我宁愿这样避免任何用户交互,但即使我们无法避免 'File In Use' 对话,我也需要一种方法来检测它并优雅地退出。
这个 post 由于同样的问题被不幸地放弃了:Check if workbook in SharePoint 365 is locked for editing
请尝试下一个功能:
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
您必须使用您的 sharePoint 工作簿的路径而不是 Intranet 路径(我出于测试原因使用),当然...我不使用 sharePoint 位置,并且我没有在这些情况下对其进行测试。
该功能的基础是无法打开打开的工作簿以进行二进制访问。而且这个评估只需要几毫秒(在内网上,至少……)。
我有一个 Excel 共享工作簿存储在遗留的 SharePoint 2010 文档库中,多个用户需要通过 VBA 工具打开它进行编辑。先发制人:我不确定图书馆是否在编辑前强制执行 CheckOut,但我不是网站所有者,甚至没有权限查看此设置。
我已经使用 .CanCheckOut 属性 查看是否有其他用户已经签出文档(通过我的工具,它总是在编辑之前签出,即使图书馆不强制执行),以及代码中止并显示一条消息,如有必要,稍后再试。但有一种情况,用户可能会进入共享文件并手动编辑,然后返回 但不会立即关闭文件 。这意味着 .CanCheckOut 属性 为 TRUE(文件不再签出)但是 'File In Use' 对话在运行时由另一个试图使用我的工具的用户触发,因为共享文件在技术上仍然是尽管未签出,但以编辑模式打开(由其他人打开)。
有什么方法可以检查这种情况,即共享文件已签入但已被其他用户打开为可写?我宁愿这样避免任何用户交互,但即使我们无法避免 'File In Use' 对话,我也需要一种方法来检测它并优雅地退出。
这个 post 由于同样的问题被不幸地放弃了:Check if workbook in SharePoint 365 is locked for editing
请尝试下一个功能:
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
您必须使用您的 sharePoint 工作簿的路径而不是 Intranet 路径(我出于测试原因使用),当然...我不使用 sharePoint 位置,并且我没有在这些情况下对其进行测试。
该功能的基础是无法打开打开的工作簿以进行二进制访问。而且这个评估只需要几毫秒(在内网上,至少……)。