查找使用连接的位置 Excel VBA

Find locations where connections are used Excel VBA

我有一大堆 Excel 2013 工作簿需要改进,每个工作簿都有多个 sheet 和多个数据连接,我正在寻找一种快速列出的方法:

我可以在连接对话框中看到所有这些信息,但无法以编程方式跟踪它们。我想一次只处理一个文件,所以我不担心所有文件中的 运行 代码,只是我可以在开始处理相关文件时放入模块中的东西。到目前为止,我在这个网站上找到了这个:

Dim conn As WorkbookConnection
For Each conn In ActiveWorkbook.Connections
Debug.Print conn.Name
Next conn

但我找不到与之配套的位置信息。如有任何指点,我们将不胜感激。

干杯

凯尔

我觉得代码没问题。你能不能这样试一下,看看你有没有连接:

Public Sub TestMePlease()

    Dim conn As WorkbookConnection

    If ActiveWorkbook.Connections.Count > 0 Then
        For Each conn In ActiveWorkbook.Connections
            Debug.Print conn.Name
        Next conn
    Else
        Debug.Print "No connection found"
    End If

End Sub

编辑: 有关连接的更多信息在库中。要查看它,请按 ctrl + space,如下所示:

关于sheet的名字,在这里:

    Debug.Print conn.Ranges.Item(1).Parent.Name

关于连接字符串,Microsoft 不会为您提供从 VBA 访问此类信息的可能性。如果可用,那应该是一个巨大的安全问题。

预期输出:

(Connection's Name): Sheet'sName|1st Cell of Range
Connection's ODBC Command Text
(Connection's Name): Sheet'sName|1st Cell of 1st Range // Sheet'sName|1st Cell of 2nd Range

给你:

Private Sub List_Connections_Ranges()

Dim wC As WorkbookConnection
Dim rG As Range
Dim TpStr As String

For Each wC In ActiveWorkbook.Connections
    TpStr = "(" & wC.Name & ") found on : "
    For Each rG In wC.Ranges
        TpStr = TpStr & rG.Parent.Name & "|" & rG.Cells(1, 1).Address(0, 0) & " // "
    Next rG
    Debug.Print Left(TpStr, Len(TpStr) - 4)
    Debug.Print wC.ODBCConnection.CommandText
Next wC

End Sub