【发布时间】:2015-10-01 16:04:55
【问题描述】:
我有 2 个 Excel 工作簿,其中包含大量基于事件的 VBA 代码。如果它们最终在同一个 Excel 实例(2003 或 2013)下运行,事件会同时触发并导致崩溃。
因此,在 Excel 2003 中,我在单独的 excel 实例中打开工作簿(A 和 B),工作簿 A 有一个链接,可使用以下格式从工作簿 B 中“拉入”实时更新日期
{=Excel.Sheet.8|'\\server\B.xls'!'!Sheet1!R1C1:R300C8'}
我首先在它自己的实例中打开“B”,然后我也在它自己的实例中打开“A”。 “A”询问我是否要更新外部工作簿中的链接,我选择“更新”
在 Excel 2003 中,这可以完美运行。工作簿在单独的 Excel 实例下运行,因此不共享内存占用,一切都安全稳定,但 A 从 B 获取实时流更新(不是来自保存的文件,而是来自实时运行的实例)。因此,即使它们在内存中的 Excel 2003 的单独实例中运行,它们也能够通过链接进行通信。
在 excel 2013 中,默认行为是在同一个 excel 实例中打开所有工作簿(即使您在打开下一个工作簿之前尝试像在 2003 中一样打开 Excel.exe)。我知道我可以强制 Excel 2013 通过 Ctrl + 右键单击菜单选项打开一个新的 Excel 实例,但是这些 Excel 实例现在无法像 2003 年那样相互通信。
在 excel 2013 中,当我在 A 和 B 之间创建相同的链接时,A 可以从 B 提取的唯一数据是已保存到文件服务器的任何数据。 “A”没有“挂钩”到“B”的“实时”实例中。
这是对 Excel 2003 的改变。在 2003 中,如果先打开“B”,然后打开“A”,则“A”识别到“B”已打开,并将挂钩到实时运行的实例“B”(即使它们不在同一个实例中运行)。
Excel 2013 工作簿有什么方法可以在单独的实例中运行(为了稳定性),但让这些实例“挂钩”实时进程...这是 Excel 2003 中的功能吗?
【问题讨论】:
-
我只有一个事件驱动例程,因此使用同一个实例时,我的 Excel 从未崩溃过。您是否尝试在事件发生之前设置 enableevents=false?
-
不能解决我的问题...出于各种原因,我希望恢复以前使用 Excel 2003 的功能...但现在不再可用。 wtf 微软...
-
显然 msft 希望你降级。