Excel自动化 – 刷新查询时禁用SQLlogin对话框

我正在使用Excel自动化来刷新embedded在Excel 2010工作簿中的SQL查询(工作簿连接),然后按预定间隔将电子表格输出为PDF。 一切工作正常,除非SQL服务器是离线/不可用,这将不时发生。 我只想忽略问题并继续,但Excel似乎坚持显示“SQL Serverlogin”对话窗口,然后停止我的程序,直到对话框closures。 有什么办法可以禁用这个对话框吗? 我已经尝试了以下内容:

Application.DisplayAlerts = False 

这停止了​​错误对话框,但不阻止“SQL Serverlogin”对话框。

我通过使用FindWindow (在后台线程上运行)来检查SQLlogin对话框的外观,然后使用PostMessageclosures允许程序继续无人值守的对话框来解决问题。 见代码:

 var blnTerminateThread: Boolean; function CloseSQLLoginDialog(Parameter: Pointer): Integer; var hwdSQLLoginDlg: THandle; begin Result := 0; hwdSQLLoginDlg := 0; blnTerminateThread := False; while (hwdSQLLoginDlg = 0) and (blnTerminateThread = False) do hwdSQLLoginDlg := FindWindow(nil, 'SQL Server Login'); if (hwdSQLLoginDlg <> 0) then begin // Close the 'SQL Server Login' dialog window PostMessage(hwdSQLLoginDlg, WM_CLOSE, 0, 0); Result := 1; end; EndThread(Result); end; ... XLBook.Connections[intCount].OLEDBConnection.BackgroundQuery := False; intThreadID := BeginThread(nil, 0, Addr(CloseSQLLoginDialog), nil, 0, intIDParam); blnRefreshResult := XLBook.Connections[intCount].OLEDBConnection.Refresh; blnTerminateThread := True; CloseHandle(intThreadID);