我试图使用RDCOMClient将一个模块导入到excel工作簿中。
xlApp <- COMCreate("Excel.Application")
XlWbk <- xlApp$Workbooks()$Open(paste0(root, "test.xlsx"))
xlWbk.VBProject.VBComponents.Import(paste0(root, "macro/Module1.bas"))最后一行给出了错误:
could not find function "xlWbk.VBProject.VBComponents.Import"我还尝试了以下几点:
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发布于 2020-06-03 21:27:53
R不使用句点限定符来访问基础方法。但是,对象名称中允许句点。因此R试图找到一个名为xlWbk.VBProject.VBComponents.Import()的函数。
在VBA或VBS中,周期意味着访问属性和属性,而在R中,您需要使用[[或$限定符进行调整。因此,考虑调整R语义:
xlApp <- COMCreate("Excel.Application")
xlWbk <- xlApp$Workbooks()$Open(paste0(root, "test.xlsx"))
xlWbk$VBProject()$VBComponents()$Import(paste0(root, "macro/Module1.bas"))VBA中的对应方将为方法使用期间限定符:
Public Sub ImportModuleCheck()
On Error Goto ErrHandle
ThisWorkbook.VBProject.VBComponents.Import "C:\Path\To\macro\Module1.bas"
Msgbox "Module successfully imported!", vbInformation
Exit Sub
ErrHandle:
Msgbox Err.Number & " - " & Err.Description, vbCritical
Exit Sub
End Subhttps://stackoverflow.com/questions/62181438
复制相似问题