2011-09-15 29 views
0

我有一个弹出窗体的Excel加载项。如果用户填写某些值并单击“应用”按钮,则值将正确发送到基础工作表,并弹出窗体关闭。但是,如果用户点击“取消”,弹出的消息框会验证用户是否想要取消。单击“是”会导致弹出窗体关闭,但也会将Excel发送到之前活动的窗口后面 - 非常像按Alt-Tab。不是很好!Excel表格关闭时,Excel插件将表格发送到背景

有没有人有任何关于如何保持Excel的概念?

谢谢!

兰迪

回答

0

我看了上的ActiveWindow /有效收视种种变化,但没有找到任何适用的。最后,我绕着Mulberry布什想出了这个:

 IntPtr excelWindow = excelWindow = SpreadsheetApplicationFactoryBase.TheExcelApp.ExcelWin32Window.Handle; 
     Win32.SetActiveWindow(excelWindow); 

丑,但它的作品。工厂是一个创建/返回Excel实例的小类。

我非常欣赏输入。

兰迪

+0

我仍然想知道为什么Yes/No确认框将整个应用程序发送到后台。这对我来说没有任何意义。 – EoRaptor013

0

您可以在消息框中ActiveWindow.ActivatePrevious 和测试后,把这个权与

Debug.Print ActiveWindow.Caption 
ActiveWindow.ActivatePrevious 
Debug.Print ActiveWindow.Caption 
+0

我真的很笨吗?我没有ActiveWindow,或者至少,IntelliSense无法识别。或者,这仅仅是你实例化的简写吗? – EoRaptor013

+0

智能感知让它弹出了我......也许你可以尝试'Application.ActiveWindow'。虽然这很奇怪。如果我再回到Windows机器上,我会再试一次。 – Brad

+0

是的,刚刚确认。如果我开始输入“activew”,然后按Ctrl +空格完成它。不明确附加到对象。 – Brad