У меня есть электронная таблица на NAS, которая совместно используется устройствами Windows и Ma c. Электронная таблица представляет собой базу данных о правах на авторские права, а также изображения, также хранящиеся на NAS. Я использую VBA для заполнения и именования изображений при создании или изменении записи. Код отлично работает на Windows ПК; но не работает, когда я запускаю его на ОС Ma c, даже с локально сохраненными изображениями. Сначала я играл с разрешениями на NAS - вплоть до подключения к нему с правами администратора от Ma c. Кроме того, если я получал доступ к чему-либо в Finder, все изображения были доступны и отображались.
После поиска я подозревал, что проблема связана с изолированной программной средой ОС Ma c. Об этом свидетельствует операционная система Ma c, запрашивающая разрешение на доступ к указанным c изображениям при открытии электронной таблицы, после чего появляются ошибки при попытке доступа к изображениям из кода. В качестве подтверждающего теста я переместил всю структуру папок в среду библиотеки Ma c OS Office, чтобы избежать каких-либо ограничений в песочнице, как предлагалось в других публикациях, а затем все стало работать идеально.
Очевидно, что все хранится локально не имеет большого смысла в общей среде! Таким образом, мои вопросы касаются преодоления проблем с доступом, связанных с песочницей в ОС Ma c.
Можно ли каким-либо образом получить доступ к изображениям и листам на NAS без этих ошибок? Есть ли решение кода VBA?
Спасибо за вашу помощь.
ОКРУЖАЮЩАЯ СРЕДА
Я использую EXCEL 2016 на обеих машинах с последними обновлениями Office для Windows 10 на P C и Ma c OS 10. NAS является станцией связи Buffalo.
Для информации ошибка возникает в операторе 'set myPict', - когда она возникает. Сообщение об ошибке, например, «Произошла ошибка при импорте этого файла. /Volumes/Colour_Designer/Colour_Designer_image_database/5.jpg.'
Кусок кода, который выполняет эту работу, выглядит следующим образом: -
If InStr(1, Application.OperatingSystem, "Mac", vbTextCompare) > 0 Then
PictureLoc = "/Volumes/Colour_Designer/Colour_Designer_image_database/" & Target.Value & ".jpg"
Else
PictureLoc = "\\LS220D620\Colour_Designer\Colour_Designer_image_database\Photo Album 2020-04-23.album\" & Target.Value & ".jpg"
End If
With Target.Offset(0, 5)
Set myPict = ActiveSheet.Shapes.AddPicture(FileName:=PictureLoc, _
LinkToFile:=msoFalse, _
SaveWithDocument:=msoTrue, _
Left:=myleft + 4, _
Top:=mytop + 4, _
Width:=-1, _
Height:=-1)
myPict.Height = .RowHeight
myPict.Top = .Top
myPict.Left = .Left
myPict.Placement = xlMoveAndSize
myPict.Name = "1"
myPict.Name = Target.Value
End With
Примечание. Путь на P немного отличается C - в имени папки используется расширение .album, что также может вызвать проблемы в ОС Ma c; но «один шаг за раз».