查找使用Excel VBA连接的位置

时间:2017-02-08 12:37:40

标签: excel vba excel-vba connection connection-string

我有一大堆Excel 2013工作簿,我必须优化,每个工作簿都有多个工作表和多个数据连接,我正在寻找一种快速列出的方法:

  • 连接名称
  • 连接字符串
  • 使用连接的位置(工作表名称或范围将有用)

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

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

但我无法找到与此相关的位置信息。任何指针都会非常感激。

干杯

凯尔

2 个答案:

答案 0 :(得分:4)

预期产出:

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

你走了:

{{1}}

答案 1 :(得分:1)

代码看起来对我好。你可以这样试试看你是否有联系:

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,如下所示:

enter image description here

关于工作表名称,它在这里:

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

关于连接字符串,Microsoft不允许您从VBA访问此类信息。如果它可用,它应该是一个巨大的安全问题。