Excel VBA:获取加载项的引用工作簿的工作簿对象

时间:2018-10-16 09:54:41

标签: excel vba excel-vba oop

我可以通过将工作簿的 .IsAddin 属性设置为True并将其保存为* xlam格式来创建代码加载项。

然后我可以将其添加为对任何其他工作簿的引用,例如:

Sub Test()
    Dim wb As Workbook
    Set wb = Workbooks.Add
    wb.VBProject.References.AddFromFile "PathToAddIn.xlam"
End Sub

然后可以从主wb工作簿中调用外接程序的代码过程。

但是,如果在外接程序中运行过程时,我想获得引用外接程序的工作簿的工作簿对象

例如,如下所示:

Sub ThisProcedureIsWithinTheAddIn()
    Debug.Print ThisWorkbook.Path ' Returns the path of this add-in (xlam) file
    Dim ReferringWorkbook As Workbook
    Set ReferringWorkbook = ThisWorkbook... ' How does one reference the caller/referrer?
End Sub

出于这个问题的目的,假定代码执行在一个完全独立的线程中,并且wb对象(最初创建的)不再作为变量存在。实际上,在我的应用程序中,wb是在完全独立的 New Excel.Application 中创建的。

我意识到我可以使用 For Application.Workbooks 中的每个wb浏览应用程序中的每个工作簿,并找到一些相关的匹配条件。但这是一个混乱的解决方案。还有更优雅的东西吗?

0 个答案:

没有答案