Excel:使用VBA执行SQL过程 - 允许用户继续工作 - 请勿悬挂Excel应用程序



我有几种从Excel VBA执行存储过程的方法。实际上,我什至对将该过程的结果返回Excel不感兴趣,我只需要启动该程序即可。但是,当该过程运行Excel时,"悬挂",并且由于客户无法使用,尤其是当程序运行时间为5分钟或更长时间时。

我查看了人们在单个工作簿中实例化新应用程序的其他解决方案,但尚不清楚如何在这种情况下执行该过程。另一个解决方案是在后台打开第二个工作簿(隐藏给用户(,并在该工作簿打开时自动运行宏,但是当我知道何时关闭它时,我尚不清楚。

我调用该过程的代码,请注意,这遇到了超时问题,对此也受到赞赏:

Sub Workbook_Open()
 'Create connection string variable
    Dim item As String
    Dim con As New ADODB.Connection
    'Build the connection string
    con.ConnectionString = "Provider=SQLNCLI11;" _
             & "Server=MyServerName;" _
             & "Database=Oracle;" _
             & "Integrated Security=SSPI;"
   'Open the connection
    con.Open
    item = vbNullString
    item = "exec dbo.SP_ORACLE_PULL"
    con.Execute (item)
   'Close the connection   
    con.Close
 End Sub

有人有任何建议的方法吗?最好打开隐藏在后台的工作簿并从那里运行该过程吗?我怎么知道何时关闭该工作簿并将状态转移回原始工作簿?仍然会"挂"客户所有开放的Excel工作簿。我全都搜索了,但没有找到此类情况的任何代码示例。

这都是一个定格,直到我们可以在4-6mo中形式化一个更企业的解决方案。

ADO使用WithEvents

声明连接等,支持异步操作

请参阅此处:例如:https://support.microsoft.com/en-us/help/190988/how-to-to-popen-apen-ado-recordsets-recordsets-resordsets-anchronichinchonchronicely-withevents

最新更新