【问题标题】:Excel 2013 workbooks in separate instances of Excel communicating via linkageExcel 2013 工作簿在单独的 Excel 实例中通过链接进行通信
【发布时间】: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 希望你降级。

标签: vba excel


【解决方案1】:

在其中一个工作簿(您选择拉出的第一个工作簿)中,您可以使用 VBA 定义 2 个 Excel 实例。然后,您可以引用每个实例并使用 Application.Run 在每个 Excel 程序中执行子例程。

举个例子……

    Sub FromBook1()

Dim EApp1 as Excel.Application
Dim EApp2 as Excel.Application
Dim Bk1 as Excel.Workbook
Dim Bk2 as Excel.Workbook

'Set the first object to this instance of Excel (the first book you opened)
Set EApp1 = GetObject(,"Excel.Application")
Set EApp2 = CreateObject("Excel.Application")

Set Bk1 = EApp1.Workbooks("[name of workbook #1]")
Set Bk2 = EApp2.Workbooks.Open("[path for workbook #2]")

'Put your condition/event in here (e.g., an if/then)

'If the condition is triggered
With EApp2
  .Run("[Name of subroutine in book 2 to call]")
End With

    End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 2017-04-15
    相关资源
    最近更新 更多