有没有一种方法可以将R链接到Excel的多个示例?

jobtbby3  于 2023-05-30  发布在  其他
关注(0)|答案(1)|浏览(143)

我有一个调用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
fcg9iug3

fcg9iug31#

您可以使用R打开Excel文件的多个示例。您可以使用“xlWbk1$Activate()"选择所需的示例。然后,您可以使用“xlWbk1$Run(“Macro1”)从R运行Excel宏。

library(RDCOMClient)
xlApp <- COMCreate("Excel.Application")
xlApp[["Visible"]] <- TRUE

xlWbk1 <- xlApp$Workbooks()$Open("D:\\Excel_File_Macro1.xlsm")
xlWbk2 <- xlApp$Workbooks()$Open("D:\\Excel_File_Macro2.xlsm")

xlWbk1$Activate()
xlApp$Run("Macro1")

xlWbk2$Activate()
xlApp$Run("Macro2")

相关问题