在打开工作簿/工作表时创建持久的ADODB连接

时间:2018-06-26 20:07:41

标签: excel vba excel-vba 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])

...但是我遇到有关在功能/子外部不允许“设置”的问题。 那么有什么办法可以使连接持久化,而我只是继续通过它执行命令?

0 个答案:

没有答案