【发布时间】:2021-06-15 22:05:12
【问题描述】:
我正在尝试在 Excel 365 宏中从 VBA 运行 AppleScript,但我不断收到:
运行时错误“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”而不是整个路径,但得到了同样的错误。我尝试将最后一个参数作为带引号的字符串而不是使用变量并得到相同的结果。我看过这篇文章:
How can I launch an external python process from Excel 365 VBA on OSX?
并从那里开始我的编码(这个例子的第一个参数没有路径)。然后我读了这个:
来自 Microsoft 的 https://docs.microsoft.com/en-us/office/vba/office-mac/applescripttask,专门用于使用 AppleScriptTask 命令。它更清楚地列出了过程,但基本相同。我也看过这个帖子:
How to simply run an applescript task from mac excel 2016
我在这里找到的 Ron deBruin 文章的链接断开了:
https://macexcel.com/examples/setupinfo/applescripttask/index.html
这很清楚,更容易阅读,但说的基本相同。通过使脚本成为应用程序并将其作为超链接调用来解决链接断开的帖子。我试过了,它可以工作,但这种方法有几个缺点:不能将参数传递给脚本,不能从脚本中取回任何东西,并且控制不会等待脚本在执行下一行之前结束VBA 代码。我真的想让 AppleScriptTask 命令工作。我觉得我一定错过了什么。如果其他人让这个工作,我一定做错了什么。我尝试打开在工具参考中可以找到的所有参考,但这并没有改变任何东西,我仍然收到错误“5”:消息。如果可以的话,请在这里帮助我。我非常感谢您提供的任何帮助。
谢谢
菲尔
【问题讨论】: