2016-10-16 14 views
0

Rにクエリを送信し、Microsoft AccessのコマンドボタンからRスクリプトを実行します。誰もこれを前にやって、これを実装する方法を提案することができますか?Microsoft AccessのコマンドボタンからRスクリプトを実行し、Microsoft AccessからRにデータを渡します。

データはMicrosoft Accessに格納され、クエリはMicrosoft Accessでユーザーがクリックするボタンに基づいています。

おかげ

答えて

2

自動Rscript.exeを使用してShellコマンドを呼び出すだけです。しかし、最初に、クエリデータをRがcsvやtxtファイルなどで読み取れる形式にエクスポートする必要があります。あるいは、RをRODBC経由でデータベースに接続させます。

コマンドラインコールでは、クエリー名(RODBC SQL文の場合)またはRが受信するcsv/txtパスなどのパラメータを、シェル文字列をスペース区切りの値で連結して送信できます。次に、RにcommandArgs()リストを使用して値を受け取ります。

パス名にスペースがある場合は、二重引用符も必要です。また、環境変数にRscriptがある場合は、PATHを使用して、Rscriptコマンドを直接使用することができます。それ以外の場合は、Rscript.exeが常駐する完全パスを入力します(通常はインストールbinフォルダにあります)。例コメントアウト:

Private Sub QueryCmdButton_Click() 
    DoCmd.TransferText acExportDelim, , "qryToExport", "C:\Path\To\CSV.csv" 

    Shell "Rscript ""C:\Path\To\R\script.R""", vbNormalFocus 
    ' Shell "C:\Path\To\Rscript.exe ""C:\Path\To\R\script.R""", vbNormalFocus  
    ' Shell "Rscript ""C:\Path\To\R\script.R""" & " " & qryName & " " & csvPath, vbNormalFocus 

    MsgBox "Successfully processed R script!", vbInformation 
End Sub 

以上の洗練されたShell呼び出しがエラー処理のためのリターンコードを受け取るために:前の迷惑なコメント

Sub RunRscript() 
    Dim shell As Object 
    Dim path As String 
    Dim waitTillComplete As Boolean: waitTillComplete = True 
    Dim style As Integer: style = 1 
    Dim errorCode As Integer 

    DoCmd.TransferText acExportDelim, , "qryToExport", "C:\Path\To\CSV.csv" 

    Set shell = VBA.CreateObject("WScript.Shell") 

    path = "RScript ""C:\Path\To\R\script.R"""  
    errorCode = shell.Run(path, style, waitTillComplete) 

    Set shell = Nothing 
End Sub 
+0

申し訳ありません。私はこの方法についての良い文書を見つけることができませんでしたが、あなたはこれを理解しているようです。私はあなたのコードの "シンプル"なバージョンを得ることができました。 http://stackoverflow.com/questions/40538004/prombelm-with-r-script-execution-from-access-2016-command-buttonまた、私はあなたのコードの "空想"バージョンにパスを置き換えようとしましたが、私は毎回エラーメッセージを受け取っていますが、その理由は分かりません。ご協力ありがとうございました – user3781528

0

あなたのRコードでhttps://social.technet.microsoft.com/Forums/office/en-US/d3640d72-e91f-4d86-a52e-6d3a66888bf8/how-to-create-a-button-in-access-2010-that-runs-vba-code?forum=officesetupdeployprevious

を参照してください、あなたのVBAコードのコマンドボタンを作成するにはhttps://www.r-bloggers.com/a-million-ways-to-connect-r-and-excel/

を参照して、VBAを使用してMicrosoft AccessからRコードを実行することができ、あなたがアクセスすることができますODBCを使用したMicrosoft Accessデータベースhttp://rprogramming.net/connect-to-ms-access-in-r/

64ビットWindowsおよびRで問題が発生した場合は、How to connect R with Access database in 64-bit Window?

関連する問題