vba和R的互动

时间:2014-04-18 13:10:44

标签: r excel vba

我在Excel中有一个前端报告(继承文件)。有多个按钮调用VBA代码,然后调用SQL查询,存储过程或 R脚本文件(以rcmd批处理/ shell的形式,传递一些参数等。)

目前,VBA中有应用程序/等待时间,以确保在下一步启动之前R脚本已完成。

可能我不需要强调这总是不起作用 100%(取决于数据大小等)。

问题: 是否有一种方法可以将/ code放在R.script的末尾,这将通知VBA是时候继续了?

或类似地,VBA有可能检查特定的R批次是否仍在运行?

感谢您的任何建议。

1 个答案:

答案 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)