VBA +多态性:覆盖第三方的工作表函数

VBA +多态性:覆盖第三方的工作表函数

我的公司大量使用使用(闭源)VBA 插件的数据提供程序。原则上,每个查询都遵循一定的结构:

  1. 使用公式填充一个单元格,其中公式的参数指定查询

  2. 该公式的范围已扩展(不是数组公式!)并且下方/右侧的单元格已填充数据

但是,为了实现此功能,用户必须在机器上安装终端程序,以及在 VBA/Excel 中引用的 com-plugin。

我的问题

这些 Excel 表格由多个用户使用和扩展,但并非所有用户都可以访问数据提供程序。虽然他们可以打开表格,但表格会重新计算,数据也会消失。但是,需要频繁重新计算。我希望每个用户都能使用这些表格,而无需执行一组非常具体的公式。

尝试

  • 删除那些我没有终端访问权限的计算机上的引用。这会在包含查询的单元格中生成 NAME 错误(可接受),但此查询会覆盖部分数据(不可接受)

  • 如果允许程序刷新,查询失败后所有数据都将消失

  • 用相应单元格中的纯文本结果替换所有公式(按下按钮并循环遍历每个单元格...)。显然会破坏查询为所有后续用户提供的任何刷新功能,因此也非常糟糕。

  • 这是一个理论上的想法,但我不确定如何实现它:用首先被调用的函数(并将查询中继到原始函数,如果可用)或代替原始函数(仅在非终端机器上部署解决方案)替换插件提供的函数,它只返回原始值。

更具体地说,如果我的查询函数像这样使用:

=GETALLDATA(Startdate, Enddate, Stockticker, etc)

我想透明地交换调用背后的函数。

你看到了希望吗?还是我迷路了?非常感谢你的帮助。

附言:我当然是在谈论彭博社……


为了澄清弗兰克提出的问题,我们提出了以下几点:

  • 表格中的公式不得更改。这是一项关键任务软件,其复杂程度让任何理智的人都无法触碰它。

  • 只能使用 Excel 和 VBA(这就是上一点的原因……)

  • 阻止在特定机器上执行这几个特定公式/函数就足以阻止所有 Excel 表的执行

  • 这看起来越来越像是 stackoverflow 的一个问题 ;-)

答案1

我并不怀疑这句话的真实性,但我很难理解其中的逻辑:“这是任务关键型软件,它太复杂了,任何理智的人都不会去尝试触碰它。”

反正 ...

我会尝试将其分成两个 Excel 文件。一个文件使用 VBA 插件收集数据,并且仅在具有“终端访问”的机器上更新。内容只是数据表。

第二个文件将从第一个文件复制数据(我将为此使用 Power Query 插件)并将用于在任何机器上进行分析。

相关内容