Как заблокировать файл в onedrive с помощью VBA? - PullRequest
0 голосов
/ 01 февраля 2019

Я делаю Программу vba, которая обращается к файлу в OneDrive и редактирует его.Однако я не хочу, чтобы два пользователя могли редактировать файл одновременно.Я не могу полностью заблокировать файл, потому что, пока один пользователь редактирует, другие могут его прочитать.Я использовал для блокировки файла что-то вроде этого:

If varForReadOnly = False Then
   wbExample.LockServerFile
End If

Это никогда не работало на моей версии программы, но всегда работало на моем клиенте в течение нескольких месяцев.Теперь, после изменения имени файла OneDrive, он внезапно перестал работать, с той же ошибкой, что и на моем компьютере.

Кто-нибудь знает, что я сделал неправильно, или что я могу сделать, чтобы заблокироватьфайл?Спасибо!

1 Ответ

0 голосов
/ 05 февраля 2019

После долгих поисков я узнал, как это сделать.Я собираюсь оставить здесь ответ, потому что я до сих пор не нашел ответа на этот вопрос.

Вы должны использовать методы CheckIn () и CheckOut.Примерно так:

If Workbooks.CanCheckOut(varForFilePath) = True Then
   Workbooks.CheckOut(varForFilePath)
   Set wbVarForWorkbook = Workbooks.Open(varForFilePath)
   'works with workbook and in the end check it back     
   wbVarForWorkbook.CheckIn SaveChanges:=True
Else
   'message about busy workbook
End If

Эти методы сложны, и есть другие вещи, с которыми вам следует быть осторожными при работе с ними, но это основной ответ на вопрос о том, какие методы использовать для замены LockServerFile и блокировки файлав OneDrive, чтобы его мог редактировать только один пользователь.

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