macOS Sandbox не позволяет Excel VBA получать доступ к изображениям на NAS - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть электронная таблица на 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; но «один шаг за раз».

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