是否可以知道在 Excel VBA 中打开了多少个 Oracle 连接?

Is it possible to know how many Oracle connections are opened in Excel VBA?

我有一个 excel 宏。宏正在连接到 Oracle 以获取数据。 此获取可能会或可能不会打开多个连接(取决于用户在宏中的编码方式)。

是否可以知道在 excel vba 中打开的 Oracle 连接?或者 我重新表述我的问题:是否有可能知道从 VBA 脚本中的 Excel 宏打开了多少个连接?

连接代码:

Public Const CONNECT_STRING = "Provider=MSDAORA.1;Password=XXXX;User ID=XXXXX;Data Source=XXXXX;Persist Security Info=True"   
Dim conn As ADODB.Connection
conn.Open CONNECT_STRING
MsgBox Application.ActiveWorkbook.Connections.Count

Count is still 0

答案是否定的……是的。

没有内置任何东西来跟踪您打开到特定数据库的 ADODB 连接数。如果需要,您必须自己跟踪。

您可以通过在创建连接时将每个连接添加到集合中,然后编写一个函数在返回计数之前检查两件事来实现这一点。

  1. 确保连接对象不是 Nothing
  2. 通过检查 connection's state property.

    来确保连接在计数之前是打开的
    Dim conn As ADODB.Connection
    For Each conn in someCollection
        If Not conn Is Nothing Then
            If conn.State <> adStateClosed Then
                count = count + 1
            End If
        End If
    Next conn
    

您需要自己弄清楚您希望如何实际跟踪项目中的所有连接。