我正在尝试在 Excel 365 宏中从 VBA 运行 AppleScript。
I get:
运行时错误“5”:无效的过程调用或参数
我的 /Library/Application Scripts/com.microsoft.Excel 文件夹中有一个名为“PythonCommand.scpt”的脚本:
on PythonCommandHandler(pythonScript)
--do shell script "/usr/local/bin/Python3" & pythonScript
return "Handler ended! " & pythonScript
end PythonCommandHandler
我注释掉了“do”语句,所以我应该简单地取回我发送的内容。我在脚本编辑器中测试了这一点,添加了一行来调用该函数,并且它有效。
我的 VBA 宏中有以下代码:
Dim result As String
Dim strPyScript As String
strPyScript = "xxxx"
result = AppleScriptTask("/Library/Application Scripts/com.microsoft.Excel/PythonCommand.scpt", "PythonCommandHandler", strPyScript)
当我运行它时,出现错误“5”。
我将第一个参数更改为“PythonCommand.scpt”而不是整个路径,但出现了相同的错误。
我将最后一个参数作为带引号的字符串而不是使用变量放入,并得到了相同的结果。
我看了这个帖子:如何在 OSX 上从 Excel 365 VBA 启动外部 python 进程? https://stackoverflow.com/questions/43319389/how-can-i-launch-an-external-python-process-from-excel-365-vba-on-osx并从那里开始我的编码(这个例子有第一个参数,没有路径)。
然后我读到了这篇:https://learn.microsoft.com/en-us/office/vba/office-mac/applescripttask https://learn.microsoft.com/en-us/office/vba/office-mac/applescripttask来自 Microsoft,专门用于使用 AppleScriptTask 命令。它更清楚地列出了该过程,但基本相同。
我看了这个帖子:如何从 mac excel 2016 简单地运行 applescript 任务 https://stackoverflow.com/questions/38723420/how-to-simply-run-an-applescript-task-from-mac-excel-2016其中有一个指向 Ron deBruin 文章的损坏链接,我在这里找到了该文章:https://macexcel.com/examples/setupinfo/applescripttask/index.html https://macexcel.com/examples/setupinfo/applescripttask/index.html这非常清楚且更容易阅读,但基本上说的是相同的事情。
通过将脚本设置为应用程序并将其作为超链接调用,解决了链接损坏的帖子。我尝试过,它有效,但这种方法有几个缺点:无法将参数传递给脚本,无法从脚本返回任何内容,并且控制不会等待脚本结束后再执行下一行VBA 代码。
我打开了“工具参考”中可以找到的所有参考,但这并没有改变任何东西。