我有一大堆Excel 2013工作簿,我必须优化,每个工作簿都有多个工作表和多个数据连接,我正在寻找一种快速列出的方法:
我可以在连接对话框中看到所有这些信息,但是无法以编程方式跟踪它们。我想一次做一个这样的文件,所以我不担心在所有文件中运行代码,只是当我开始处理相关文件时,我可以放入模块中。到目前为止,我在这个网站上找到了这个:
Dim conn As WorkbookConnection
For Each conn In ActiveWorkbook.Connections
Debug.Print conn.Name
Next conn
但我无法找到与此相关的位置信息。任何指针都会非常感激。
干杯
凯尔
答案 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,如下所示:
关于工作表名称,它在这里:
Debug.Print conn.Ranges.Item(1).Parent.Name
关于连接字符串,Microsoft不允许您从VBA访问此类信息。如果它可用,它应该是一个巨大的安全问题。