我正在使用包“xlsx”打包输出并使用R和Excel进行项目,并且遇到以下问题。运行R脚本的VBA代码:在Excel中输出图像问题
分析由名为“Model.R”的脚本执行。第二个脚本名为“Output.R”,生成我的分析的输出(其中包括一些图表)。我用命令
source("Output.R")
把它从第一个脚本如果我跑都来自R工作室,没有问题,并且输出正确的脚本。
现在,我建立了一个Excel的“接口”,以运行脚本,使用下面的VBA代码的宏:
Sub Run_script()
Dim cmdLine As String
cmdLine="C:\\Program Files\\R\\R-3.3.1\\bin\\Rscript C:\\...\\Model.R"
shell cmdLine
End Sub
现在一切正常,并输出一个新的Excel文件打印正确,现在所有的图表都是空白的,里面什么都没有。
有没有人知道如何解决这个问题?例如可能是从Excel运行脚本的另一种方式。
谢谢
编辑
这里是产生并保存其中一个图表中,作为一个例子将R代码:
hist(P1,probability=FALSE,main = "",breaks = 20)
title("CE Anno -1")
dev.copy(png,filename="CE1.png");
dev.off()
所以图像保存为PNG文件在同一个工作目录中。然后,将其打印在Excel中我使用XLSX包和下面的代码:
outwb <- createWorkbook()
SummaryCE <- createSheet(outwb, sheetName = "Summary CE")
addPicture("CE1.png", SummaryCE, scale = 0.5, startRow = 11, startColumn = 1)
saveWorkbook(outwb, "Risultati RO.xlsx")
正如我所说的,这个代码工作正常,如果我来自R Studio中运行它。使用以前的VBA代码从命令行调用它,Excel已正确创建,但该图像是空白框。
EDIT 2
感谢你的帮助,我成功地解决了这个问题。我现在要做的是自动生成基于相同脚本的报告(Word格式,此处不提供LaTex)Model.R
要做到这一点,我使用了Markdown功能,并且我编写了一个R Markdown文件“Report.Rmd”。在这里,我基本上加载从Model.R执行
load("Mywork.RData")
导致再加入一些表格,图表和注释工作区。然后,我使用“Model.R”脚本中的以下行生成Word文档
render("Report.Rmd")
再次,我遇到了和以前类似的问题。如果我从R Studio运行它,一切都很好。如果我使用以前的Excel界面,则Word输出不会出现在文件夹中。
任何人都知道什么可能导致这个问题?
谢谢你,遗憾的一些问题,我很舒适有R,但它是我第一次使用VBA。
你不需要 –
你保持引用*图片*,*图表*和*输出*,但我们没有看到代码运行的东西只是一个命令行调用逃脱反斜线VBA或在命令行上。你可以发布R代码,以便我们看到你的完整过程? R脚本是否生成Excel要呈现的图表图像? – Parfait
图表是在单独的窗口中绘制的,在excel中不能被shell捕获。尝试从磁盘上的R脚本中将图表保存为png/jpg,并使用vba脚本在Excel中加载这些图像文件。 –