gpt4 book ai didi

excel - 可以判断哪个工作簿调用了 Excel 加载项中的函数 (xla)

转载 作者:行者123 更新时间:2023-12-02 01:43:50 52 4
gpt4 key购买 nike

我想在 Excel 加载项中编写一个小日志记录函数,我将从许多不同的工作簿中调用该函数。我希望能够通过仅传递日志文本来调用它,并且日志函数本身可以处理时间戳、工作簿名称等。

但是,我无法使用 ThisWorkbook 或 ActiveWorkbook 来确定哪个工作簿负责进行调用,因为 Thisworkbook 将返回对加载项本身的引用,而 VBA 代码在除具有事件焦点的工作簿之外的工作簿中运行在 Excel 中可以进行调用,但 ActiveWorkbook 将返回窗口中具有焦点的那个。

Application.Caller 看起来是一个可能的解决方案,但这似乎仅在从单元格而不是从 VBA 调用该函数时才有效。

我想做的事情是不可能的吗?

更新

据>1人士透露,这实际上是不可能的。如果有人碰巧知道一些聪明的解决方法,请说出来。

最佳答案

好的,正确阅读问题后我会再试一次......

那么,陈述问题:

您想要一个用外接程序编写的例程,当从另一个工作簿中的 vba 调用时,可以计算出(除其他外)哪个工作簿包含进行调用的 vba,而无需显式传递此信息。

如上所述,这是不可能的(这是一个与从代码访问调用堆栈类似的问题:据我所知这是不可能的)

但是你几乎可以像这样得到你想要的

像这样声明你的日志函数:

Sub MyLogger(wb as Workbook, LogText as String)
Dim CallerName as String
CallerName = wb.name
' your code...
End Sub

然后无论你在哪里调用子函数

MyLogger ThisWorkbook, "Log Text"

虽然不如什么都不传递,但至少总是一样的

关于excel - 可以判断哪个工作簿调用了 Excel 加载项中的函数 (xla),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4901148/

52 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com