在 VBA 中签入/签出 SharePoint/OneDrive 文档的确切工作方式?

How exactly does checking in/checking out a SharePoint/OneDrive document work in VBA?

提问人:Adnan Zafar 提问时间:11/16/2023 更新时间:11/16/2023 访问量:38

问:

我的总体目标是让一个 Excel 文档(此代码所在的文档)打开存储在 SharePoint/OneDrive 中的单独 Excel 文档,向其写入一些数据,然后关闭它。带有代码的文档旨在供我和我的一些同事使用,我们都写到同一个辅助文档,我有两个分别打开和关闭工作簿的函数。

代码如下:

Function open_wb() As Workbook
    Application.ScreenUpdating = False

    Dim wb_name As String
    wb_name = "https://redacted/path/to/file.xlsb"

    Dim checked_out As Boolean
    checked_out = False
    If Workbooks.CanCheckOut(wb_name) Then
        Call Workbooks.CheckOut(wb_name)
        checked_out = True
        Set open_wb = Workbooks.Open(wb_name)
    End If
    
    If Not checked_out Then
        Set open_wb = Nothing
    End If
End Function

Function close_wb(ByRef wb As Workbook)
    If wb.CanCheckIn Then
        wb.CheckIn SaveChanges:=True, Comments:="abc"
        Application.ScreenUpdating = True
        Set wb = Nothing
    Else
        MsgBox "Unable to check in"
    End If
End Function

现在我遇到了这个问题。首先,它似乎对我的同事来说工作正常,但是当我尝试使用它时,无法签出写入的文件。除非我在Excel中打开它。这与这个答案背道而驰,该答案说文件不应该打开。

我的另一个担忧是:如果文件以某种方式被签出而没有重新签入,是否必须手动签入(或丢弃签出)?

如果它们返回 false,这些函数似乎几乎没有追索权。如果我无法签出文件,我有什么选择来解决这个问题?我还担心,在我的测试中,我遇到了返回 true 的情况,然后我收到了来自 的错误。这些功能在什么情况下会失败,我该如何应对故障?CanCheckOutCanCheckInCanCheckOutWorkbooks.CheckOut

Excel VBA SharePoint OneDrive

评论

1赞 teylyn 11/16/2023
为什么需要签出文件?您可以在不签出文件的情况下进行编辑。Excel 支持同时多用户访问 SharePoint 文件已经有一段时间了,这减少了签出文件的需要。
0赞 Adnan Zafar 11/16/2023
@teylyn我最初尝试过。在我的测试中,我发现写入第二个文件的数据并不总是被保存,特别是当两个用户在特定时间范围内写入文件时。我希望检查文件可以防止这种情况发生。

答: 暂无答案