为什么VBA代码开放的R文件,而不是运行的代码

问题描述 投票:1回答:1

我在Excel中的VBA宏调用的R代码。在VBA按钮才会打开R档,而不是同时运行的代码。下面是代码:

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 = "C:\Users\user\Documents\Forecast.R"
errorCode = shell.Run(path, style, waitTillComplete)
End Sub

将R代码最终创建一旦运行一个新的Excel文档。我希望按钮来运行将R代码,创建新文档。如果我只是单独运行R代码里面,它工作正常。我想知道什么我需要添加到这个代码,以便R档实际运行,而不是唯一开口。

r excel vba
1个回答
0
投票
VBA.CreateObject("WScript.Shell").run(...)

将基本运行无论是在通过Windows命令提示符...段给出。这相当于运行批处理或PowerShell脚本。 (按下开始,打字cmd并通过命令提示运行的代码)

默认情况下,每种类型的文件有一些默认方式打开。文件夹,文件等经常在一些观众开放。给目录的R文件将执行相同的操作双击它。

为了运行它作为一个脚本,您将需要过R的可执行Rscript.exe打开它。默认的目录是在给定的

C:\Program Files\R\R-3.5.1\bin

通常这是通过创建一个环境变量这个目录,在这一点上,你可以通过运行RSCRIPT完成

path = "Rscript [fullpath to R file] [Arguments]"
VBA.CreateObject("WScript.Shell").run(path)

作为参考如何设置这个路径,请在这里签出Java的伟大指南:How do I set or change the PATH system variable?

假设你想避免这种情况,你可以简单地通过直接引用的完整路径为“脚本”可执行文件运行脚本

path = """C:\Program Files\R\R-3.5.1\bin\Rscript.exe"" ""C:\Users\user\Documents\Forecast.R"""
VBA.CreateObject("WScript.Shell").run(path)

双引号在这种情况下,似乎有必要。

© www.soinside.com 2019 - 2024. All rights reserved.