Please, help with announcing an error from Rterm: I am calling R from an Excel VBA and noticed that if there is an error nothing conspicuous happens. I would like just a popup window when R cannot finish cleanly. The "ret " value returned from Shell is useless in determining what happened. Thank you all. ***************************** Public Sub Repo() ds = InputBox("Type in reporting date as YYYY-MM-DD", "reporting date") ''----- weird way to pass the date argument as Windows won't ''----- execute the command line directly, so I create a .bat exestr = "Rterm --restore --save --args " & ds & " < m.in.R > out.txt" Set fs = CreateObject("Scripting.FileSystemObject") Set a = fs.CreateTextFile("rpcd.bat", True) a.writeline (exestr) a.Close ret = Shell("rpcd.bat") MsgBox ("wait for about 5 seconds as the script runs asynchronously") End Sub **************m.in.R************ ds=commandArgs(T)[1] ans=f.repo(ds) q("yes")
On 1/11/2008 9:18 AM, stephen bond wrote:> Please, help with announcing an error from Rterm: > > I am calling R from an Excel VBA and noticed that if there is an error > nothing conspicuous happens. I would like just a popup window when R > cannot finish cleanly. The "ret " value returned from Shell is useless > in determining what happened.This seems to be a VBA problem, not an R problem. Rterm returns a 0 return value when it exits cleanly, and a non-zero value when there's an error. It looks as though you're losing that by wrapping the Rterm call in a batch file. Can't VBA make the call to Rterm directly? Duncan Murdoch> > Thank you all. > > ***************************** > Public Sub Repo() > ds = InputBox("Type in reporting date as YYYY-MM-DD", "reporting > date") > > ''----- weird way to pass the date argument as Windows won't > ''----- execute the command line directly, so I create a .bat > > exestr = "Rterm --restore --save --args " & ds & " < m.in.R > out.txt" > Set fs = CreateObject("Scripting.FileSystemObject") > Set a = fs.CreateTextFile("rpcd.bat", True) > a.writeline (exestr) > a.Close > > ret = Shell("rpcd.bat") > MsgBox ("wait for about 5 seconds as the script runs asynchronously") > > End Sub > > **************m.in.R************ > ds=commandArgs(T)[1] > > ans=f.repo(ds) > > q("yes") > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.
I try with: ret = Shell(exestr) and it starts R, but the source file is not executed inside R> a=commandArgs() > a[1] "Rterm" "--restore" "--save" "--args" "2005-02-03" #correct date passed [6] "<" "m.in.R" ">" "out.txt">it restores the correct workspace, but then it fails to source the script, which is located in the same dir as the workspace. inside R> source("m.in.R") # does the job, so it is not a finding problemBTW is it possible to get the error message from R somehow??? ----Original Message---- From: murdoch at stats.uwo.ca Date: 01/11/2008 6:30 To: "stephen bond"<stenka1 at go.com> Cc: <r-help at r-project.org> Subj: Re: [R] communicate from Rterm On 1/11/2008 9:18 AM, stephen bond wrote:> Please, help with announcing an error from Rterm: > > I am calling R from an Excel VBA and noticed that if there is anerror> nothing conspicuous happens. I would like just a popup window whenR> cannot finish cleanly. The "ret " value returned from Shell isuseless> in determining what happened.This seems to be a VBA problem, not an R problem. Rterm returns a 0 return value when it exits cleanly, and a non-zero value when there's an error. It looks as though you're losing that by wrapping the Rterm call in a batch file. Can't VBA make the call to Rterm directly? Duncan Murdoch> > Thank you all. > > ***************************** > Public Sub Repo() > ds = InputBox("Type in reporting date as YYYY-MM-DD", "reporting > date") > > ''----- weird way to pass the date argument as Windows won't > ''----- execute the command line directly, so I create a .bat > > exestr = "Rterm --restore --save --args " & ds & " < m.in.R > out.txt"> Set fs = CreateObject("Scripting.FileSystemObject") > Set a = fs.CreateTextFile("rpcd.bat", True) > a.writeline (exestr) > a.Close > > ret = Shell("rpcd.bat") > MsgBox ("wait for about 5 seconds as the script runsasynchronously")> > End Sub > > **************m.in.R************ > ds=commandArgs(T)[1] > > ans=f.repo(ds) > > q("yes") > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html> and provide commented, minimal, self-contained, reproducible code.