我有一个调用R的Excel宏,然后将输出写回打开的Excel文件。我正在使用excel.link包来建立从R到Excel的连接。
xl.workbook.activate(xl.workbook.name = "Workbook Name.xlsb")
这在大多数情况下都能正常工作,但偶尔我会打开多个Excel示例,或者想同时在多个示例中运行宏以保存运行时间。打开Excel的多个示例时,它只会在我打开的第一个示例中找到我的工作簿。如果不是在第一个示例中,我会得到一个像下面这样的错误。
Error in xl.workbook.activate(xl.workbook.name = "Workbook Name.xlsb") :
workbook with name "Workbook Name.xlsb" doesn't exists.
是否有一种方法可以链接到工作簿,而不管Excel的哪个示例,或者识别/指定我想要使用的示例?
Excel宏正在使用类似于下面示例的代码调用R,如果这有帮助的话。
Sub RunR()
Dim shell As Object
Set shell = VBA.CreateObject("WScript.Shell")
Dim waitUntilComplete As Boolean: waitUntilComplete = True
Dim errorCode As Long
errorCode = shell.Run("""C:\Program Files\R\R-4.0.5\bin\R.exe""" & " CMD BATCH --vanilla " _
& """--args Workbook Name.xlsb"" " & """file path for R script""", vbHide, waitUntilComplete)
End Sub
1条答案
按热度按时间fcg9iug31#
您可以使用R打开Excel文件的多个示例。您可以使用“xlWbk1$Activate()"选择所需的示例。然后,您可以使用“xlWbk1$Run(“Macro1”)从R运行Excel宏。