现在,我有一个包含数百个(如果不是数千个)函数的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])
...但是我遇到有关在功能/子外部不允许“设置”的问题。 那么有什么办法可以使连接持久化,而我只是继续通过它执行命令?