我希望我的Access应用程序在用户单击按钮后运行外部程序(在本例中为R脚本)。我使用这段代码:
Dim RetVal
RetVal = Shell("""C:\Program Files\R\R-2.10.1\bin\R.exe"" CMD BATCH --no-environ --silent --no-restore --no-save ""c:\test.R"" ""c:\test-result.txt""", vbHide)
MsgBox RetVal
这很好用,但是在我的脚本执行时VBA代码继续运行。如何让Access等待脚本完成?有没有人建议如何将脚本的错误信息反馈给Access?
答案 0 :(得分:1)
@Remou链接到的OpenProcess和WaitForSingleObject组合可能是你做这件事的最好选择。你应该看一下this,这是一个很好的shell模块,等待。
要从脚本返回消息,您可以使用redirecting the scripts input and output。这不适合胆小的人。作为替代方案,我会redirect the output of the script to a text file,然后在退出后读取该文件。