我有两本作业簿。工作表“A”创建 Excel.Application 的一个新实例,然后它要求其工作簿“A”打开工作簿“B”并从工作簿“B”中的函数获取结果。 我可以设法从工作表“A”调用工作簿“B”的函数,但每次从工作簿“A”调用它们时都会出现错误:对象不支持此属性或方法(错误438)
重现错误的代码:
本练习册
Sub call_fun(ByRef wb As Workbook)
MsgBox (wb.fun()) ' How to get the result?
End Sub
“A”表
Sub sheet_main()
Dim app As Excel.Application
Set app = New Excel.Application
' Open the workbook B
app.Workbooks.Open ("path\to\file\file workbook A.xlsm")
' Call the workbook's a function
ThisWorkbook.call_fun (app.ActiveWorbook)
app.ActiveWorkbook.Close
app.Quit
Set app = Nothing
End Sub
本练习册
Function fun() As String
fun = "Function from workbook B"
End Function
CallByName
:
Sub call_fun(ByRef wb As Workbook)
MsgBox CallByName(wb, "fun", VbMethod)
End Sub
另请注意此处参数周围没有括号(或在上面的
MsgBox
调用中):
ThisWorkbook.call_fun app.ActiveWorbook