VBA - открыть и проверить книгу Excel из SharePoint - PullRequest
1 голос
/ 21 октября 2019

Я пытаюсь записать некоторые данные в книгу Excel, которая размещена в нашей библиотеке документов SharePoint. Я создаю экземпляр Excel из Microsoft Project.

Я пытался использовать следующую процедуру:

  1. Проверить, можно ли извлечь файл
  2. Если его можно извлечь, затем откройте его

Вот фрагмент кода:

If ExcelApp.Workbooks.CanCheckOut (FileURL) = True Then
    Set NewBook = ExcelApp.Workbooks.Open(FileName:=FileURL, ReadOnly:=False)
    ExcelApp.Workbooks.CheckOut (FileURL)
Else
    MsgBox "File is checked out in another session."
End If

По какой-то причине функция CanCheckOut всегда возвращает мне FALSE и я не могу сказать, когда файл может быть извлечен экземпляром Excel. Разве это не работает, потому что я вызываю код VBA из MS Project?

Мое приложение должно иметь возможность проверить, не был ли файл извлечен, затем проверить его, обновить и сохранить + проверить его. обратно. Это должно быть невероятно просто, но, очевидно, Check-Out / Check-In не реализован правильно в VBA ...?

1 Ответ

0 голосов
/ 21 октября 2019

Методом проб и ошибок я обнаружил, что 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...