我有一个隐藏的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实例作为发送打开的工作簿的那个),但是真的不知道很多关于它的正确管理(例如,如果它决定使用哪个实例,我可以用xlNew中提供的注册Excel实例的hWnd切换而不会导致系统崩溃吗?)
答案 0 :(得分:1)
它不会再收到任何Application_Open事件,因为它已经打开。您可以在隐藏的实例上尝试以下操作...
xlHidden.IgnoreRemoveRequests = true;
这对我来说对VS2005和Office 2003有用 - 有点过时了!