Страницы: 1
RSS
Ошибка при импорте изображения на MacOS, проблемы при адаптации рабочего кода с винды на мак
 
Уважаемые форумчане,

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

суть такая - есть файл с макросом и данными внутри, при запуске макроса данные с листа парсятся в массив, создается новая книга, сохраняется в той же категории, что и исходный файл, а после заполняются листы и вставляются картинки, которые лежат в той же папке, что и исходный файл

на винде все работает, а на маке возникла проблема с картинками. Вставлял картинки на винде через метод .Pictures.Insert, но на маке в методе .Pictures.Insert не удается установить параметр SaveWithDocument:=True, компилятор говорит, что ошибка

начал вставлять через шейпы
сначала проверил в временном файле на маке такой код
Код
ActiveSheet.Shapes.AddPicture ActiveWorkbook.Path & "/1.png", False, True, Cells(4, 3).Left + 2, Cells(4, 3).Top + 1.5, -1, -1 

заработало

но когда добавил это в свою программу (естественно с выбором "/" или "" в зависимости от операционной системы) - не работает
на маке пишет - ошибка при импорте изображения

единственное предположение - что при создании новой книги, у нее отсутствует доступ к файлам в папке, в которой она сохранена
пробовал перед вставкой писать код
Код
ChDir ActiveWorkbook.Path

не помогло
так, например, при создании новой книги вылезает окошка с разрешением на предоставление доступа - вероятно он предоставляется исходной книге, а не созданной

есть ли у кого-нибудь идеи как решить эту проблему?

спасибо
 
Для вопросов по Мас у нас есть отдельный форум.
 
Файл с примером покажете?
 
ниже код и приложил файл упрощенный с этим куском кода

Код
Dim Check_OS As StringSub Main()

If Not Application.OperatingSystem Like "*Mac*" Then
    Check_OS = "\"    
Else       
    If Val(Application.Version) > 14 Then            
      Check_OS = "/"
    End If
End If
Application.ScreenUpdating = False
Workbooks.Add
ActiveSheet.Shapes.AddPicture ThisWorkbook.Path & Check_OS & "1.png", False, True, Cells(4, 3).Left + 2, Cells(4, 3).Top + 1.5, -1, -1
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & Check_OS & "TEMP" & Date & ".xlsx"
Application.ScreenUpdating = True
End Sub
Изменено: alexulkin - 31.07.2017 21:43:45
 
Проверьте так
 
Спасибо, но, к сожалению, такая же ошибка вылезает

 
 
Странно, у меня отработал на 2011-м и 2016-м
 
Вероятно потому что вы уже открывали эту картинку тем файлов, в котором хранится макрос
гуглил на тему решения этой проблемы, максимум что находил - платные надстройки, которые работают в 2016 версии
толком мелкомягкий не отвечает на вопросы, в основном все сводится к тому что они "в процессе допиливания VBA под 2016"

пока что опытным путем установил вот что
если из файла, не используя макрос, а используя обычную команду "вставить картинку" - вставить картинку, то потом её можно обрабатывать и макросом, вставлять как через шейпы, так и через  Pictures.Insert. НО только если она была ранее открыта из этой книги

смена местоположения требует повторять открытие  

пока только возникла идея - во время создания новой книги вызывать диалоговое окно с отображением только png файлов, открывать все png файлы, а потом продолжать макрос, удалять все картинки и расставлять заново макросом как надо.  
 
В общем задал вопрос мелкомягким, вот ответ
он работает, но доставляет неудобство - каждому кто будет использовать приложение нужно рассказать как создать такую папку


Hi Alexulkin,

Based on your description, when you insert pictures by VBA in Excel for Mac, an error message pops up due to Apple's sandbox rules. You may try the following steps to check whether the problem still persists.

1. Open a Finder Window.

2. Hold the Alt key when you press on Go in the Finder menu bar.

3. Click on Library.

4. Open the Group Containers folder.

5. Open the UBF8T346G9.Office folder.

6. Create a Folder inside this folder named MyExcelFolder for example.

7. Select this folder.

These are three ways to easily open the folder manual:

1. Add it to your Favorites in Finder by dragging it to it.

2. Add it to your Favorites in Finder with the shortcut : command + Ctrl + T

3. Drag the folder to the Desktop with the CMD and Alt key down. You now have a link(alias) to the folder on your desktop so it is easy to find it and open it in the future.

Note : Adding the folder to your Favorites is my favorite because you see the folder in your open and save dialogs in Excel.

Regards,

Tisky

Страницы: 1
Наверх