查找使用连接的位置 Excel VBA
Find locations where connections are used Excel VBA
我有一大堆 Excel 2013 工作簿需要改进,每个工作簿都有多个 sheet 和多个数据连接,我正在寻找一种快速列出的方法:
- 连接名称
- 连接字符串
- 使用连接的位置(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
我有一大堆 Excel 2013 工作簿需要改进,每个工作簿都有多个 sheet 和多个数据连接,我正在寻找一种快速列出的方法:
- 连接名称
- 连接字符串
- 使用连接的位置(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