Я портирую некоторые VBA из Excel 2003 (Windows XP) в Excel 2004 (OS X). Excel 2004 содержит интерпретатор VBA, который позволяет вам выводить некоторые команды в Applescript с помощью функции MacScript () .
Это все хорошо и хорошо для того, что я хочу сделать (то есть для запуска файлов в их приложении по умолчанию, то, что в версии Windows использует вызов API и, очевидно, несовместимо с версией Mac). Код, который я использую для генерации Applescript, выглядит так:
sScript = "set filepath to POSIX path of """ & path & """" & Chr(13)
sScript = sScript & "try" & Chr(13)
sScript = sScript & "set command to ""open "" & quoted form of filepath" & Chr(13)
sScript = sScript & "do shell script command" & Chr(13)
sScript = sScript & "end try"
MacScript(sScript)
Теперь все, что я сделал и прочитал, говорит мне, что это должно сработать. Это работает, когда я запускаю его из редактора Applescript. И все же, это всегда терпит неудачу, несмотря ни на что. И то, что явно терпит неудачу, это часть «POSIX path». Он генерирует общую ошибку 5 «Недопустимый вызов процедуры или аргумент», которая не очень поучительна.
Это кажется довольно важным для его работы, и я не нашел никаких доказательств того, что другие люди имели эту проблему до меня. Это сводит меня с ума. «Путь POSIX» кажется стандартной частью определения Applescript, но здесь всегда происходит сбой. (Конвертирует файл из Macintosh HD: Пользователи: MyUserName: Blah в / Users / MyUserName / Blah.)
У кого-нибудь есть предложения? Я думаю, что мне просто нужно написать свою собственную функцию пути POSIX в VBA, чтобы заставить ее работать с этим кодом, если функция MacScript () отказывается делать это самостоятельно. Но я настороженно отношусь к разбору строк и т. Д. В отношении функции, которую я понимаю только наполовину (очевидно, приведенный выше случай прост, но я не знаю, насколько сложным он может стать).