【发布时间】:2011-02-04 17:41:23
【问题描述】:
我想在一个 Excel 插件中编写一个小日志功能,我将从许多不同的工作簿中调用它。我希望能够通过仅传递日志文本来调用它,并且日志函数本身可以处理时间戳、工作簿名称等。
但是,我无法使用 ThisWorkbook 或 ActiveWorkbook 来确定哪个工作簿负责进行调用,因为 Thisworkbook 将返回对加载项本身的引用,而 VBA 代码在具有活动焦点的工作簿之外的工作簿中运行在 Excel 中可以进行调用,但 ActiveWorkbook 将返回窗口中具有焦点的那个。
Application.Caller 看起来像是一个可能的解决方案,但这似乎只在从单元格调用函数时才有效,而不是从 VBA。
我想做的事不可能吗?
更新
据 > 1 个人说,这实际上是不可能的。如果有人碰巧知道一些巧妙的解决方法,请说出来。
【问题讨论】:
-
我有 95% 的把握完全按照你的意愿去做是不可能的,所以我会让某人 100% 肯定地给我们一个正式的答案。您可能已经使您的日志例程看起来像 log(callingWbk As Workbook, text As String),并使用 ThisWorkbook 作为参数从每个位置调用它。不过,您可以在每个调用您的插件记录器的工作簿中设置一个本地日志例程,这样您的实际日志调用就可以保持简单。
标签: excel excel-addins xla vba