2

このプロセスを簡素化できますか?

まず、R でこのファイルを手動で開きます: C:\R\ExampleModel\ModelScript.R

R-Editor から、開いている ModelScript.R ファイルから以下のコードを実行すると、Model.R スクリプトが正しく処理されます。

source("C:\\R\\ExampleModel\\Model.R", echo=T)

Excel 内で、最初に R から ModelScript.R を手動で開かずに、上記のソース コードを実行したいと考えています。source() コマンドを Excel/VBA から自動的に処理するために、以下の VBA コードを変更できるものはありますか? バッチ プロセスが Rexcel 以外の唯一のオプションである場合は、提供されている拡張機能の例を使用してください。

Excel 2007 VBA コード:

Sub RRUN()

    Dim rCommand As String
    rCommand = "C:\\Program Files\\R\\R-3.0.0\\bin\\Rscript.exe --verbose C:\\R\\ExampleModel\\ModelScript.R"

    'Timer Set to run full Model.R script
    Application.Wait Now + TimeValue("00:00:05")

    'Runs R Script and Arguements into process
    Shell rCommand, vbNormalFocus

    'Timer Set to run full Model.R Script
    Application.Wait Now + TimeValue("00:00:05")

End Sub

注: 上記の Rscript.exe の代わりに R.exe を使用してみましたが、結果はありませんでした。

4

2 に答える 2

3

Visual Studio Tools for Officeを調べることをお勧めします。Excel 2007 の場合、VSTO リンクはこちらです。

Excel 内の Rのを次に示します (VTSO コードを使用して記述)。「その他のアプリケーション」というタイトルのセクションを見てください。これは同じ人々からの別の例です。彼らがそれらのアプリケーションを販売しているのか、それともすべてがカスタムメイドなのか、私にはわかりません.

別の可能な解決策を次に示します。私のアプリケーションには非常に具体的な要件があるため、この方法を追求していません。

要点は、VBA を使用して何かをまとめることができるとしても、より良いスキームがあるように見えるということです。

于 2013-10-17T17:24:50.200 に答える
1

以下が機能するようです:

rscript.exe がシステム PATH にあることを確認します。

path= ステートメントの逆コンマがファイル名に対して機能することを確認してください。私はそれを一般的なものにするのではなく、現在実行しているものとまったく同じままにしました(そしてより混乱させます)。

Sub RunRscript()
Dim shell As Object
Set shell = VBA.CreateObject("WScript.Shell")
Dim waitTillComplete As Boolean: waitTillComplete = True
Dim style As Integer: style = 1
Dim errorCode As Integer
Dim path As String
path = "rscript ""C:\Users\Charles\SkyDrive\Documents\Development\G4H\Technical evaluation templates\Graphical analysis.R"""
errorCode = shell.Run(path, style, waitTillComplete)

End Sub

これはhttp://shashiasrblog.blogspot.co.uk/2013/10/vba-front-end-for-r.htmlのコードを使用し、MrFlick のアドバイスを受けてまとめられました。私が見ることができるものから、それはかなり一般的でもあるはずです。

于 2014-06-05T16:49:43.360 に答える