0

我有一个隐藏的 Excel 实例,当它是唯一运行的 Excel 实例时,我试图通过用户双击工作簿来隐藏它。我目前的解决方案是捕获隐藏实例的任何事件Application_WorkbookOpen()Application_WorkbookNew()当它们发生时,大致执行以下操作:

Dim strWbOpenedName as String, xlNew as New Excel.Application
strWbOpenedName = Wb.path & "\" Wb.name
Wb.Close False
xlNew.Visible = True
xlNew.Workbooks.Open strWbOpenedName
Set xlNew = Nothing

然而,尽管变得可见,并且是打开工作簿的最后一个 Excel 实例,xlNew 不会收到后续的 Application_WorkbookOpen 事件 - 这些仍然会转到原始隐藏实例。有谁知道我如何将“主要”excel实例重定向为我新创建的实例?

我有一个可怕的怀疑,我需要开始使用正在运行的对象表(取决于 Windows 如何选择 Excel 的实例作为发送打开的工作簿的实例),但对正确的操作知之甚少管理它(例如,如果这是它决定使用哪个实例的方式,我是否可以将已注册 Excel 实例的 hWnd 切换为 xlNew 可用的 hWnd 而不会导致系统崩溃?)

4

1 回答 1

1

它不会再收到任何 Application_Open 事件,因为它已经打开。您可以在隐藏的实例上尝试以下操作...

xlHidden.IgnoreRemoveRequests = true;

这对我来说适用于 VS2005 和 Office 2003 - 有点过时了!

于 2013-01-07T12:56:23.870 回答