Ошибка VBA при открытии общего файла - чтение тегов рассматривается как попытка изменить
Я столкнулся со странной ошибкой и ищу некоторые идеи.
Сценарий:
Файл Powerpoint на общем диске открывается пользователем A. Теперь пользователь B хочет открыть тот же файл и получает сообщение "открыть только для чтения?". Диалог. Пользователь нажимает "ОК".
Файл открывается, и запускается надстройка (при каждом открытии файла) для проверки определенных тегов на слайдах, указывающих на наличие конфиденциального материала. Это вызывает ошибку в следующей функции:
Function taggedSlide(tagName As String)
' find the slide which is tagged with tagName
Dim oSl As Slide
Set oSl = Nothing
For Each oSl In ActivePresentation.Slides
If Len(oSl.Tags(tagName)) > 0 Then <<<<<<<<<<<<<<< this is the line that causes error
Set taggedSlide = oSl
Exit Function
End If
Next oSl
Set taggedSlide = Nothing
End Function
Функция якобы перебирает все слайды в презентации, ищет тег с именем tagName
и возвращает слайд (или ничего). Похоже, что это включает только операции чтения, но код выдает ошибку в указанной строке.
Чтобы сделать вещи более интересными, поведение будет другим, если я просто отмечу файл как "только для чтения", сохраню его и открою. Разница в том, что я могу изменить файл в этом случае - я просто не могу его сохранить. Но этот файл нельзя редактировать вообще, даже если я не сохраню его. И вышеописанная операция чтения рассматривается как "модификация"...
У меня есть следующие вопросы:
- Есть ли свойство документа, которое я могу прочитать в VBA, чтобы сообщить мне, что это файл "невозможно изменить"? Я ищу что-то похожее на
ActivePresentation.ReadOnly
, но это установлено для файла "только для чтения", и это другое. - Почему линия
If Len(oSl.Tags(tagName)) > 0 Then
лечиться как операция "изменение файла"?
Воспроизвести эту ошибку было трудно, потому что мне действительно нужно, чтобы два пользователя открыли один и тот же файл (сохранение файла как доступного только для чтения было недостаточно), чтобы это произошло. Ждем ваших идей / комментариев / ответов!