Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从VB.NET应用程序调用Excel时,如何使Excel显示在应用程序前面?_Vb.net_Excel_Excel Interop_Office Automation_Excel Automation - Fatal编程技术网

从VB.NET应用程序调用Excel时,如何使Excel显示在应用程序前面?

从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-这对用户来说都不是一个好的体验。我们希望登录对话框出

我有一个VB.NET应用程序,它使用Microsoft.Office.Interop.Excel打开一个电子表格,向其中输入一些数据,刷新数据透视表中的数据,然后向用户展示电子表格

代码非常简单(未显示错误处理):

运行此代码时发生的情况是,Excel在调用应用程序后面打开,因为我们正在刷新数据连接,调用应用程序后面也会显示小的Excel“SQL Server登录”对话框,因此用户需要将ALT+TAB切换到Excel或单击任务栏中的Excel-这对用户来说都不是一个好的体验。我们希望登录对话框出现在呼叫应用程序的前面

有人能建议如何实现这一目标吗?我已经尝试在RefreshAll之后将Visible&UserControl属性的设置移动到,但这没有任何区别

干杯

Chris.

对不起,C#,我不懂VB,所以我自己无法翻译,但主要思想是使用WinAPI:

[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);