Mac OS X, Excel 2011 VBA Вопрос: Я пытаюсь запустить оболочку bash из макроса Excel 2011. Команда выполняется правильно с терминала Mac OS X Lion 10.7.5. Он также выполняет правильно используя Applescript из командной строки:Запуск Applescript из Excel 2011 VBA
osascript -e 'do shell script "/Users/MyFolder/Desktop/MyShell"'
Я также могу выполнить его как ./test.sh, где test.sh является исполняемым (CHMOD + х test.sh) файл, включая линии
#!/bin/bash
osascript -e 'do shell script "/Users/MyFolder/Desktop/MyShell"'
из Excel, я в состоянии выполнить аналогичный test.sh файл
#!/bin/bash
open /Applications/Calculator.app/
с использованием кода Excel VBA функции
Function TestShell() As Double
Shell ActiveWorkbook.Path & ":test.sh"
TestShell = 0
End Function
Однако, когда я переключаю файл test.sh на требуемый контент (команда Applescript, которая использует osascript выше), он терпит неудачу. Еще один аспект патологии заключается в том, что если я удалю файл test.sh, а затем заменим его, то при первом запуске он часто выкладывает окно с надписью «Это файл из Интернета. Вы все еще хотите запустить его? ». В этом случае после нажатия кнопки «ОК» код иногда запускается, но не выполняется корректно, даже если функция выходит без ошибок. Но, неизменно, если я попытаюсь запустить его снова, это дает мне
Run-time Error '75'
Path/File Access Error
и функция аварий.
Для немного другого контекста сценарий «MyShell» (а не его настоящее имя) был написан для принятия аргументов из файла, поскольку я нашел документацию в Интернете, что Excel в MacOS не смог запустить скрипт с входными аргументами через «Оболочка» в макросе. У меня не было проблемы с записью в файл ввода аргументов. Просто трудно получить скрипт test.sh, который выполняет сценарий «MyShell» для выполнения. Я не обычный программист VBA, но я просмотрел столько веб-страниц, сколько мог, и нашел много различий между ПК и Mac OS X, но я не смог найти решение этой простой проблемы. Любые предложения будут высоко ценится.