首页 > 解决方案 > 在工作簿/工作表打开时创建持久 ADODB 连接

问题描述

现在我有一个 Excel 工作表,其中包含数百个(如果不是数千个)函数,每个函数都单独打开到我的 SQL Server 的 ADODB 连接,执行命令,然后关闭连接 - 这导致刷新数据时需要等待很长时间.

Public Function Alere(StoredProcedure As String, paramItem As Range)
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
connString = [connection string]
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.Open sConnString
Set rs = conn.Execute("[query]")
If Not rs.EOF Then
    Alere = rs(0)
Else
    Alere = "-"
End If
End Function

是否可以在 worksheet_activate() 上打开我的连接,并让它持续存在,以便我可以随时引用它?我尝试将以下内容放在模块的顶部:

Public conn As ADODB.Connection
Public rs As ADODB.Recordset
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.Open ("DSN=" & Worksheets("Variables").[H2] & ";Trusted_Connection=Yes;WSID=" & Environ("COMPUTERNAME") & ";DATABASE=" & 
Worksheets("Variables").[H3])

...但是我遇到了有关在函数/子之外不允许“设置”的问题。那么有什么方法可以让连接持续存在,我只是继续通过它执行命令?

标签: vbaexceladodb

解决方案


推荐阅读