Rにクエリを送信し、Microsoft AccessのコマンドボタンからRスクリプトを実行します。誰もこれを前にやって、これを実装する方法を提案することができますか?Microsoft AccessのコマンドボタンからRスクリプトを実行し、Microsoft AccessからRにデータを渡します。
データはMicrosoft Accessに格納され、クエリはMicrosoft Accessでユーザーがクリックするボタンに基づいています。
おかげ
Rにクエリを送信し、Microsoft AccessのコマンドボタンからRスクリプトを実行します。誰もこれを前にやって、これを実装する方法を提案することができますか?Microsoft AccessのコマンドボタンからRスクリプトを実行し、Microsoft AccessからRにデータを渡します。
データはMicrosoft Accessに格納され、クエリはMicrosoft Accessでユーザーがクリックするボタンに基づいています。
おかげ
自動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
を参照してください、あなたの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?
申し訳ありません。私はこの方法についての良い文書を見つけることができませんでしたが、あなたはこれを理解しているようです。私はあなたのコードの "シンプル"なバージョンを得ることができました。 http://stackoverflow.com/questions/40538004/prombelm-with-r-script-execution-from-access-2016-command-buttonまた、私はあなたのコードの "空想"バージョンにパスを置き換えようとしましたが、私は毎回エラーメッセージを受け取っていますが、その理由は分かりません。ご協力ありがとうございました – user3781528