我的公司大量使用使用(闭源)VBA 插件的数据提供程序。原则上,每个查询都遵循一定的结构:
使用公式填充一个单元格,其中公式的参数指定查询
该公式的范围已扩展(不是数组公式!)并且下方/右侧的单元格已填充数据
但是,为了实现此功能,用户必须在机器上安装终端程序,以及在 VBA/Excel 中引用的 com-plugin。
我的问题
这些 Excel 表格由多个用户使用和扩展,但并非所有用户都可以访问数据提供程序。虽然他们可以打开表格,但表格会重新计算,数据也会消失。但是,需要频繁重新计算。我希望每个用户都能使用这些表格,而无需执行一组非常具体的公式。
尝试
删除那些我没有终端访问权限的计算机上的引用。这会在包含查询的单元格中生成 NAME 错误(可接受),但此查询会覆盖部分数据(不可接受)
如果允许程序刷新,查询失败后所有数据都将消失
用相应单元格中的纯文本结果替换所有公式(按下按钮并循环遍历每个单元格...)。显然会破坏查询为所有后续用户提供的任何刷新功能,因此也非常糟糕。
这是一个理论上的想法,但我不确定如何实现它:用首先被调用的函数(并将查询中继到原始函数,如果可用)或代替原始函数(仅在非终端机器上部署解决方案)替换插件提供的函数,它只返回原始值。
更具体地说,如果我的查询函数像这样使用:
=GETALLDATA(Startdate, Enddate, Stockticker, etc)
我想透明地交换调用背后的函数。
你看到了希望吗?还是我迷路了?非常感谢你的帮助。
附言:我当然是在谈论彭博社……
为了澄清弗兰克提出的问题,我们提出了以下几点:
表格中的公式不得更改。这是一项关键任务软件,其复杂程度让任何理智的人都无法触碰它。
只能使用 Excel 和 VBA(这就是上一点的原因……)
阻止在特定机器上执行这几个特定公式/函数就足以阻止所有 Excel 表的执行
这看起来越来越像是 stackoverflow 的一个问题 ;-)
答案1
我并不怀疑这句话的真实性,但我很难理解其中的逻辑:“这是任务关键型软件,它太复杂了,任何理智的人都不会去尝试触碰它。”
反正 ...
我会尝试将其分成两个 Excel 文件。一个文件使用 VBA 插件收集数据,并且仅在具有“终端访问”的机器上更新。内容只是数据表。
第二个文件将从第一个文件复制数据(我将为此使用 Power Query 插件)并将用于在任何机器上进行分析。