2016-11-10 13 views
-1

Access 2016コマンドボタンからRスクリプトを実行しようとしています。スクリプトはファイルを読み込み、ファイル内の値からプロットを生成します。私は、Windows 10、コマンドラインから実行するとき、次のように それはうまく機能:Access 2016コマンドボタンからRスクリプトを実行すると問題が発生する

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

私はここでのアクセス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 

スクリプトは実行されますが、空のプロットが生成されます。すべての軸とラベルがありますが、すべてのデータがありません。なぜこれが起こっているのか分かりません。

フォローアップ私はvbNormalFocusvbHideを交換し、ええ...データとのプロットを生成することができましたしました!しかし、なぜシェルコマンドに変数を代入しても機能しないのか分かりません。誰かがこれを正しく達成する方法を説明してもらえますか? 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

単にfile_pathを囲む引用符の1以上のペアを追加します。

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) 
関連する問題