Mac OS X、Excel 2011 VBA 问题:我正在尝试从 Excel 2011 宏运行 bash shell。该命令可以从 Mac OS X Lion 10.7.5 终端正确执行。它还可以从命令行使用 Applescript 正确执行:
osascript -e 'do shell script "/Users/MyFolder/Desktop/MyShell"'
我也可以将它作为 ./test.sh 执行,其中 test.sh 是一个可执行 (chmod +x 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 文件切换为具有所需内容(上面使用 osascript 的 Applescript 命令)时,它会失败。病态的另一个方面是,如果我删除 test.sh 文件,然后替换它,在第一次运行时,它通常会弹出一个窗口,上面写着“这是来自互联网的文件”。你还想运行它吗?在这种情况下,单击“确定”后,代码有时会运行,但无法正确执行,即使函数退出时没有错误也是如此。但是,总是,如果我再次尝试运行它,它会给我
Run-time Error '75'
Path/File Access Error
并且功能崩溃。
对于更多的上下文,“MyShell”脚本(不是它的真实名称)是为了从文件中获取参数而编写的,因为我在网上找到了有关 MacOS 上的 Excel 无法通过“Shell”运行带有输入参数的脚本的文档一个宏。我在写入参数输入文件时没有问题。只是很难让执行“MyShell”脚本的 test.sh 脚本执行。我不是普通的 VBA 程序员,但我浏览了尽可能多的网页,发现 PC 和 Mac OS X 之间存在很多差异,但我无法找到解决这个简单问题的方法。任何建议将不胜感激。