Vba 如何设置主Excel实例?

Vba 如何设置主Excel实例?,vba,excel,automation,Vba,Excel,Automation,我有一个隐藏的Excel实例,当它是唯一运行Excel的实例时,我试图通过用户双击工作簿来隐藏它。我目前的解决方案是捕获隐藏实例的任何应用程序\u WorkbookOpen()和应用程序\u WorkbookNew()事件,当它们发生时,大致执行以下操作: Dim strWbOpenedName as String, xlNew as New Excel.Application strWbOpenedName = Wb.path & "\" Wb.name Wb.Close False

我有一个隐藏的Excel实例,当它是唯一运行Excel的实例时,我试图通过用户双击工作簿来隐藏它。我目前的解决方案是捕获隐藏实例的任何
应用程序\u WorkbookOpen()
应用程序\u 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
但是,尽管xlNew被设置为可见,并且是最后一个打开工作簿的Excel实例,但它不会接收后续的Application_WorkbookOpen事件-这些事件仍然会转到原始隐藏实例。有人知道我是如何将“主”excel实例重定向为新创建的实例的吗


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

它将不会收到更多的应用程序打开事件,因为它已打开。您可以在隐藏的实例上尝试以下操作

xlHidden.IgnoreRemoveRequests = true;

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

事实上,这是因为我对正在收听的事件很愚蠢。我已经更正了原来的问题-实际上是应用程序\u WorkbookOpen和应用程序\u WorkbookNew events。抱歉,注意力不集中。也就是说,我已尝试设置此标志(嗯…IgnoreRemoteRequests,我猜这就是你的意思;)),现在它的行为完全符合预期,无需担心事件侦听器。此外,Excel 2003是必需的版本,过时或否。非常感谢!稍后更新:这可以工作,但会产生大量新问题(当
IgnoreRemoteRequests
未设置回false时,打开工作簿时Excel通常会中断)。因此,现在回到事件处理。仍然需要解决如何将Excel的新实例设置为更重要的。。。。