从Access 2016命令按钮

时间:2016-11-10 22:17:42

标签: r shell access-vba

我正在尝试从Access 2016命令按钮执行R脚本。该脚本读入文件并根据文件内的值生成绘图。 当我从Windows 10命令行运行它时,它运行良好,如下所示:

C:\Program Files\R\R-3.3.2\bin>Rscript --vanilla H:\R\analyze.R H:\R\LCH_22.vcf

我想从Access 2016中的按钮执行R脚本。

这是我正在使用的vba脚本:

Dim file_path As String

file_path = "H:\R\LCH_22.vcf"

Dim RetVal
RetVal = shell("""C:\Program Files\R\R-3.3.2\bin\Rscript.exe"" --vanilla ""H:\R\analyze.R"" ""H:\R\LCH_22.vcf""", vbHide)

MsgBox RetVal

脚本执行但生成空白图。它具有所有轴和标签,但缺少所有数据。我不确定为什么会这样。

跟进我已将vbHide替换为vbNormalFocus,并能够生成包含数据的情节......是的!但是,我不明白为什么将变量替换为Shell命令并不起作用。有人可以解释一下如何正确完成这个吗?我将从Access中的表单中读取文件名,这部分代码必须是动态的(参见下面我的尝试示例)。

Dim file_path
file_path = "C:\R\DNA.vcf"
Dim RetVal
RetVal = shell("""C:\Program Files\R\R-3.3.2\bin\Rscript.exe"" --vanilla ""C:\R\analyze.R"" "" & file_path & """, vbNormalFocus)

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

只需在file_path周围再添加一对引号:

Dim file_path As String
Dim RetVal As Integer

file_path = "C:\R\DNA.vcf"

RetVal = shell("""C:\Program Files\R\R-3.3.2\bin\Rscript.exe"" --vanilla "_
               & """C:\R\analyze.R"" """ & file_path & """", vbNormalFocus)