У нас есть электронная таблица, хранящаяся на сервере Sharepoint, которую все пользователи могут читать вручную, но также некоторые утвержденные пользователи имеют доступ для записи, который используется главным образом через книгу с макросами (полностью отделенную от основного листа Sharepoint) , В книге с поддержкой макросов (я назову ее «формой») для подключения к «основной» книге используется следующий код:
Set xlApp = New Excel.Application
xlApp.DisplayAlerts = False
masterOpen = False
With Application.Workbooks
If .CanCheckOut(UNCmasterRecordPath) Then
.CheckOut Filename:=UNCmasterRecordPath
Set wb = xlApp.Workbooks.Open(Filename:=UNCmasterRecordPath, UpdateLinks:=xlUpdateLinksAlways, ReadOnly:=False)
masterOpen = True ' This is used in an error handler to try the http: path if UNC path fails
Else
MsgBox "The Vacation Master Record is currently checked out, please try again later."
Exit Sub
End If
End With
После внесения необходимых изменений мой код затем использует :
wb.CheckIn SaveChanges:=True
Вышеописанное работает отлично для большинства пользователей, а до Рождества оно работало для всех пользователей. Поскольку в новом году (который может или, возможно, не принес обновление на сервер Sharepoint, я не уверен), небольшое количество пользователей получает сообщение об ошибке при достижении линии wb.CheckIn
. Я исправил это для одного из затронутых пользователей, ослабив некоторые настройки Excel Trust Center (Macro Security установлен на «Включить все», безопасный режим для ActiveX отключен), но даже с такими же изменениями на компьютере другого пользователя он по-прежнему выдает «Это документ не может быть проверен в 'ошибка в строке wb.CheckIn
.
Я попытался wb.Save
, а затем wb.CheckIn SaveChanges:=False
безрезультатно. Что меня удивляет, так это то, что он явно рад разрешить действие Checkout, но что-то вызывает проблему с методом Checkin.