我有一個VB.NET應用程序,它使用Microsoft.Office.Interop.Excel來簡單地打開一個電子表格,向其中抽取一些數據,刷新數據透視表中的數據,然後向用戶顯示電子表格。從VB.NET應用程序調用Excel時,如何讓Excel出現在應用程序前面?
的代碼非常簡單(處理未顯示錯誤):
' Start Excel Application
xlApp = New Excel.ApplicationClass
' Get Excel Workbooks
xlWorkBooks = xlApp.Workbooks
' Open workbook
xlWorkBook = xlWorkBooks.Open(Filename:=sExcelDocFullPath, IgnoreReadOnlyRecommended:=blnIgnoreReadOnly)
If Not xlWorkBook Is Nothing Then
' Pump some data over (code not shown)
' Make the first worksheet in the document active
CType(xlWorkBook.Worksheets(1), Excel.Worksheet).Activate()
'Return control of Excel to the user
xlApp.Visible = True
xlApp.UserControl = True
' Refresh workbooks (with alerts off, so as not to hassle user)
xlApp.DisplayAlerts = False
xlWorkBook.RefreshAll()
End If
時運行這些代碼會發生什麼事,是Excel中打開了調用應用程序的後面,因爲我們是刷新數據連接,在調用應用程序後面還會顯示小型Excel「SQL Server登錄」對話框,因此用戶需要將ALT + TAB添加到Excel或單擊任務欄中的Excel - 對用戶來說這兩者都不是很好的體驗。我們希望登錄對話框出現在呼叫應用程序的前面。
任何人都可以建議如何實現?我嘗試將可見的& UserControl屬性的設置移動到RefreshAll之後,但這沒有任何區別。
乾杯,
Chris。
我們有類似的問題,並嘗試了不同的方法。首先,您可以將windowState屬性設置爲XlMaximized(或XlNormal)。對於其他選項,您需要窗口句柄,並在有窗口句柄時將其告知onTop。但找到句柄並不容易...... Excel應用程序hwnd中有一個屬性。此外,你可以從窗口形成工作簿 –