Методом проб и ошибок я обнаружил, что Workbooks.CanCheckOut (Filename: = FullName), где FullName - это URL-адрес файла SharePoint, работает только для файлов, которые не открыты в текущем экземпляре Excel.
Метод всегда возвращает False, если у вас есть файл, открытый в текущем экземпляре Excel, что, очевидно, здесь имеет место. Workbooks.CheckOut (ActiveWorkbook.FullName) открывает файл, проверяет его и затем необъяснимым образом закрывает файл. Таким образом, открытие и извлечение файла SharePoint становится трехэтапным процессом.
Sub CheckOutAndOpen()
Dim TestFile As String
TestFile = "http://spserver/document/Test.xlsb"
If Workbooks.CanCheckOut(TestFile) = True Then
Workbooks.CheckOut(TestFile)
Workbooks.Open (TestFile)
Else
MsgBox TestFile & " can't be checked out at this time.", vbInformation
End If
End Sub
Это все немного противоречит интуитивно, потому что при работе с файлами SharePoint вручную нужно открывать их, чтобы посмотреть, можно ли их извлечь. и затем выполните операцию проверки. Ни MSDN, ни Excel VBA не помогают упомянуть, что метод Workbooks.CanCheckOut (Filename:= FullName)
всегда возвращает False, если у вас открыт файл в текущем экземпляре Excel.