从VB.NET应用程序调用Excel时,如何使Excel显示在应用程序前面?
我有一个VB.NET应用程序,它使用Microsoft.Office.Interop.Excel打开一个电子表格,向其中输入一些数据,刷新数据透视表中的数据,然后向用户展示电子表格 代码非常简单(未显示错误处理): 运行此代码时发生的情况是,Excel在调用应用程序后面打开,因为我们正在刷新数据连接,调用应用程序后面也会显示小的Excel“SQL Server登录”对话框,因此用户需要将ALT+TAB切换到Excel或单击任务栏中的Excel-这对用户来说都不是一个好的体验。我们希望登录对话框出现在呼叫应用程序的前面 有人能建议如何实现这一目标吗?我已经尝试在RefreshAll之后将Visible&UserControl属性的设置移动到,但这没有任何区别 干杯 Chris.对不起,C#,我不懂VB,所以我自己无法翻译,但主要思想是使用WinAPI:从VB.NET应用程序调用Excel时,如何使Excel显示在应用程序前面?,vb.net,excel,excel-interop,office-automation,excel-automation,Vb.net,Excel,Excel Interop,Office Automation,Excel Automation,我有一个VB.NET应用程序,它使用Microsoft.Office.Interop.Excel打开一个电子表格,向其中输入一些数据,刷新数据透视表中的数据,然后向用户展示电子表格 代码非常简单(未显示错误处理): 运行此代码时发生的情况是,Excel在调用应用程序后面打开,因为我们正在刷新数据连接,调用应用程序后面也会显示小的Excel“SQL Server登录”对话框,因此用户需要将ALT+TAB切换到Excel或单击任务栏中的Excel-这对用户来说都不是一个好的体验。我们希望登录对话框出
[DllImport("user32.dll", SetLastError = true)]
public static extern bool BringWindowToTop(IntPtr hWnd);
您可以从xlApp获取hwnd:
BringWindowToTop((INtPtr)XlApp.Hwnd);
我们也有类似的问题,并尝试了不同的方法。首先,可以将WindowsState属性设置为XlMaximized(或XlNormal)。对于其他选项,您需要窗口句柄,并且在拥有它时,告诉它是onTop。但是找到手柄并不容易。。。Excel应用程序中有一个属性hwnd。另外,你可以从工作簿中获取windows谢谢Alex-这就完成了!在VB中,它只是带来indowtop(CType(xlApp.Hwnd,IntPtr))
BringWindowToTop((INtPtr)XlApp.Hwnd);