我在Excel中有一个前端报告(继承文件)。有多个按钮调用VBA代码,然后调用SQL查询,存储过程或 R脚本文件(以rcmd批处理/ shell的形式,传递一些参数等。)
目前,VBA中有应用程序/等待时间,以确保在下一步启动之前R脚本已完成。
可能我不需要强调这总是不起作用 100%(取决于数据大小等)。
问题: 是否有一种方法可以将/ code放在R.script的末尾,这将通知VBA是时候继续了?
或类似地,VBA有可能检查特定的R批次是否仍在运行?
感谢您的任何建议。
答案 0 :(得分:0)
基于@z反馈和Wait for Shell to finish, then format cells - synchronously execute a command 线程。
您可以将方法WScript.Shell
与带有Run
选项的waitOnReturn
方法一起使用:
请参见Excel函数代码示例:
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1
wsh.Run Chr(34) & "C:\Program Files\R\R-3.5.0\bin\rscript" & Chr(34) & " " & Chr(34) & "C:\Users\demo_user\test.R" & Chr(34), windowStyle, waitOnReturn
test.R内容:
rnorm(10000)