使用RDCOMClient导入并运行excel module.bas

使用RDCOMClient导入并运行excel module.bas,r,excel,vba,rdcomclient,R,Excel,Vba,Rdcomclient,我正在尝试使用RDCOMClient将模块导入excel工作簿 xlApp <- COMCreate("Excel.Application") XlWbk <- xlApp$Workbooks()$Open(paste0(root, "test.xlsx")) xlWbk.VBProject.VBComponents.Import(paste0(root, "macro/Module1.bas")) 我还尝试了以下方法: xlApp$Run(paste0(root, "macro/

我正在尝试使用RDCOMClient将模块导入excel工作簿

xlApp <- COMCreate("Excel.Application")
XlWbk <- xlApp$Workbooks()$Open(paste0(root, "test.xlsx"))
xlWbk.VBProject.VBComponents.Import(paste0(root, "macro/Module1.bas"))
我还尝试了以下方法:

xlApp$Run(paste0(root, "macro/Module1.bas!header"))
xlApp$Modules()$AddFromFile(paste0(root, "macro/Module1.bas"))
上述两个代码也不起作用

有人能帮我导入这个模块吗?我用R生成了这个excel宏,要将它们复制粘贴到excel文档中并手动运行宏真是一件痛苦的事情

编辑---------

下面是.bas的内容

Attribute VB_Name = "Module1"
Sub Macro2()
Attribute Macro2.VB_ProcData.VB_Invoke_Func = " \n14"
'
' Macro2 Macro
'
    Range("I6").Select
    ActiveCell.FormulaR1C1 = "hello"
    Range("I7").Select
End Sub


R不使用句点限定符访问基础方法。但是,对象名称中允许使用句点。因此R试图找到一个名为
xlWbk.VBProject.VBComponents.Import()的函数

在VBA或VBS中,句点意味着访问属性和属性,R中需要用<代码> [[< /代码>或<代码> $> /代码>限定符]进行调整。因此,考虑调整R语义:


xlApp非常感谢您的回复!我收到了一个错误,但没有提示导致错误的原因:
xlWbk$VBProject()$VBComponents()$Import(paste0(root,“macro/Module1.bas”))错误:发生异常。
我在op中添加了信息。root的内容是什么?bas
文件是否位于子文件夹macro中?请注意,您在工作簿对象中使用大写的
X
。我在
xlWbk
中使用小写的
X
xlApp
一致。嗯……您是什么版本的MS Office正在运行?您是在Windows还是Mac上?我起初以为是
.xlsx
不能保存任何宏(但
.xlsm
可以)这是一个问题,但它甚至试图提示您使用后台Excel进程。您是如何运行R脚本的?命令行,像RStudio这样的IDE,其他?请参阅显示VBA对应项的答案扩展。运行该宏(调整路径)并描述代码是否工作或出错,如果出错,确切的消息是什么。好的,你有它!这应该是你的问题。Excel文件或可能移动工作目录。事实上,如果出现此错误,你应该无法运行任何VBA宏(即,无论你尝试导入什么)。
Attribute VB_Name = "Module1"
Sub Macro2()
Attribute Macro2.VB_ProcData.VB_Invoke_Func = " \n14"
'
' Macro2 Macro
'
    Range("I6").Select
    ActiveCell.FormulaR1C1 = "hello"
    Range("I7").Select
End Sub