2017-08-01 18 views
1

グラフをプロットするためのRコード(バックエンド)を実行し、VBA(ここではフロントエンド)を使ってpdfとしてエクスポートしたいと考えています。PDFファイルを実行してVBAで.Rを実行する

Sub plotHello() 
Dim shell As Object 
Set shell = CreateObject("WScript.Shell") 
Dim waitTillComplete As Boolean: waitTillComplete = True 
Dim style As Integer: style = 1 
Dim errorCode As Integer 
Dim path As String 
path = """C:\Produits\R\R-3.2.5\bin\R.exe"" CMD BATCH --no-environ --silent --no-restore --no-save C:\R_code\hello.R" 
shell.Run (path) 
End Sub 

事がある:それはhello.Rファイルで動作します:

sink('C:/R_code/hello.txt',append=F,type="output") 
cat('Hello World') 
sink(NULL) 

しかし、グラフィック出力をエクスポートすることはできません)(シンク、I

私が使用するVBAコードは以下のとおりです。

Library(ggplot2)  
x=c(1,2,3,4,5,6) 
y=c(45,78,35,213,65,456) 
XY=data.frame(x,y) 
g<-ggplot(data=XY,aes(x=x,y=y))+geom_line(data=XY,aes(x=x,y=y)) 
pdf('C:/R_code/hello.pdf') 
g 
dev.off() 
:その後、私は正しい構文があると思いPDF()関数

を使用する必要があります

Butitは動作しません。例えばjpeg()関数の場合... しかし、RStudioでコードを実行すると問題はVBAとpdfの間のリンクであるようです関数... 誰かが解決策を持っている場合、 多くの感謝

+0

はたぶん'プリント(g)を試す 'ではなく:1がgrid.arrangeを使用したい場合は もう一つの発言は、この変換は、二つのコマンドのPDFの表示()とdev.off

元の間で持っていますRスクリプトの最後から2番目の行に「g」を追加します。また、あなたが提供したスクリプトは 'ggplot2'をロードしないので、' library(ggplot2) 'を先頭にしてください。 – lmo

+0

ありがとうございますが、うまくいきません。 コードはRで動作していますが、VBAとRの間のリンクはtxtをsink()でエクスポートするのに適していますが、VBAから呼び出すときはそうではありません。 –

答えて

0

実際、Imoは正しくありました。 RStudioが開いていて、ライブラリがRStudio内であらかじめインポートされていても、ライブラリはRファイルにインポートする必要があります。 `

pdf('C:/R_code/hello.pdf') 
grid.arrange(...) 
dev.off() 
関連する問題