使用 RDCOMClient 导入和 运行 excel 模块 .bas
import and run excel module .bas with RDCOMClient
我正在尝试使用 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
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 Sub
我正在尝试使用 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
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 Sub