2013-10-03 3 views
2

이 프로세스를 단순화 할 수 있습니까?RExcel없이 Excel VBA에서 R 실행

첫째, 수동으로 R에서이 파일을 열 : C : \ R \ ExampleModel 아래의 코드는 오픈 ModelScript.R 파일에서 실행 ModelScript.R

R-편집기에서

, \ , Model.R 스크립트를 올바르게 처리합니다. 엑셀 내에서

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

, 내가 수동으로 첫째 R에서 ModelScript.R를 열지 않고 위의 소스 코드를 실행합니다. Excel/VBA에서 source() 명령을 자동으로 처리하기 위해 아래의 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를 사용했습니다.

+1

유용하지만 Excel R 위키는 설명하지 않습니다 ... http://rwiki.sciviews.org/doku.php?id=tips%3adata-io%3ams_windows&s=excel –

+0

탈출구가 필요한지 잘 모르겠습니다. 실행 파일 경로의 백 슬래시. –

+0

위의 VBA 코드는 Tim 형식의 Rscript.exe 및 R.exe를 실행합니다. pdf에 대한 간단한 플롯은 잘 작동합니다 ... 좀 더 복잡한 다중 기능 코드 블록에서 작동하도록 노력하고 있습니다. –

답변

3

Visual Studio Tools for Office을 살펴볼 수 있습니다. Excel 2007의 경우 VSTO 링크는 here입니다.

여기에 R의 example (Excel에서 VTSO 코드로 작성)이 있습니다. "기타 응용 프로그램"절을보십시오. 같은 사람의 또 다른 example입니다. 나는 그들이 그 응용 프로그램을 판매하는지, 또는 모든 것이 맞춤 제작인지는 알지 못합니다.

또 다른 가능한 것은 solution입니다. 내 응용 프로그램은 매우 특정 요구 사항을 가지고 있기 때문에 나는이 방법을 추구하지 않았습니다.

내 요점은 VBA를 사용하여 무언가를 함께 넣을 수 있지만 더 나은 스키마가있는 것처럼 보입니다.

1

다음은 일을 나타납니다

은 시스템 PATH

에 rscript.exe 있는지 확인 있는지 확인 파일 이름의 경로 = 문 작업에 인용 부호. 나는 그것을 지금 내가 범용으로 (그리고 더 혼란스럽게) 만들기보다는 달리고있는 것과 정확히 똑같다.

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의 조언을 사용하여 작성되었습니다. 내가 볼 수있는 것은 꽤 일반적인 것입니다.