如何从另一个 Excel 实例中打开的另一个工作簿调用函数

问题描述 投票:0回答:1

我有两本作业簿。工作表“A”创建 Excel.Application 的一个新实例,然后它要求其工作簿“A”打开工作簿“B”并从工作簿“B”中的函数获取结果。 我可以设法从工作表“A”调用工作簿“B”的函数,但每次从工作簿“A”调用它们时都会出现错误:对象不支持此属性或方法(错误438)

重现错误的代码:

练习册“A”

本练习册

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

作业本B

本练习册

Function fun() As String
    fun = "Function from workbook B"
End Function
excel vba
1个回答
0
投票

使用

CallByName

Sub call_fun(ByRef wb As Workbook)
    MsgBox CallByName(wb, "fun", VbMethod)
End Sub

另请注意此处参数周围没有括号(或在上面的

MsgBox
调用中):

ThisWorkbook.call_fun app.ActiveWorbook
© www.soinside.com 2019 - 2024. All rights reserved.