我有几种从Excel VBA执行存储过程的方法。事实上,我甚至对将该过程的结果返回到Excel都不感兴趣,我只需要启动该过程。然而,当程序正在运行时,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-6个月内正式确定一个更企业的解决方案。
发布于 2019-05-16 01:18:35
如果使用WithEvents声明连接等,则ADO支持异步操作
https://stackoverflow.com/questions/56154368
复制相似问题