У меня есть несколько рабочих книг, хранящихся в библиотеке документов на Sharepoint 2007. Я хочу, чтобы проверить книгу, изменить его, и проверить его обратно вWorkbook.CheckIn всегда производит ошибку при первом вызове?
Используя следующий код:.
Option Explicit
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub test()
Dim bk As Workbook
Dim path As String
path = "http://sharepoint/sites/test/TEST_Relink.xlsm"
If Workbooks.CanCheckOut(path) Then
Application.DisplayAlerts = False
Workbooks.CheckOut path
DoEvents
Set bk = Workbooks.Open(path, False)
bk.Sheets("test").Range("h1").Value = "modified " & Now
DoEvents
Sleep 10000
bk.checkIn True
Application.DisplayAlerts = True
End If
End Sub
bk.checkIn
вызов всегда производит следующее сообщение об ошибке во время выполнения:
Method 'CheckIn' of object '_Workbook' failed
После захожу в Debug, жму F5
продолжать и регистрация всегда происходит успешно.
Я добавил 10-секундную задержку с Sleep 10000
, потому что я думал, что, возможно, выезд потребовался некоторое время для распространения на сервер. Но независимо от того, сколько времени я установил для Sleep
, эта же проблема сохраняется. Есть предположения?
EDIT:
Я попытался с помощью зацикленной проверку .CanCheckIn
следующим образом:
While Not bk.CanCheckIn
DoEvents
Wend
bk.checkIn True
Это дало ту же ошибку.
попробуйте использовать [CanCheckIn] (https://msdn.microsoft.com/en-us/library/office/aa223808 (v = office.11) .aspx), [CanCheckOut] (https://msdn.microsoft .com/en-us/library/office/aa223809 (v = office.11) .aspx) (возможно, также завершает цикл времени с рядом попыток вокруг этих проверок, если необходимо) – amdixon
@amdixon, это дало мне ту же ошибку (см. править). – sigil